Pętla while w Python działa na takiej samej zasadzie jak w języku C++. Pętla ta powtarza instrukcje należące do jej bloku, tak długo, jak długo prawdziwy jest warunek (warunki) do niej przyporządkowany. Tworząc pętle while: musisz zadbać, aby liczba jej wywołań była skończona.
Struktura pętli while:
while warunek:
instrukcja_1_bloku_while
instrukcja_2_bloku_while
instrukcja_3_bloku_while
.....
Napisz program, który wyświetli 20 kolejnych dodatnich liczb całkowitych.
x = 1
while x <= 20: # dopóki warunek będzie prawdziwy, powtórz poniższe instrukcje
print(x) # wypisz wartość zmiennej x
x+=1 # zwiększ wartość zmiennej x o 1
Wyznacz sumę cyfr podanej liczby naturalnej.
suma = 0
liczba = int(input("Podaj liczbę: "))
while liczba > 0:
suma += liczba % 10 # podaj ostatnią cyfrę
liczba //= 10 # usuń ostatnią cyfrę
print(suma) # wypisz sumę cyfr liczby x
Wypisz liczby podzielne przez 3, których reszta z dzielenia przez 7 wynosi 2 w zakresie <0..200>
liczba = 0
while liczba <=200:
if liczba % 3 == 0 and liczba % 7 == 2:
print(liczba)
liczba+=1
Podobnie jak w instrukcji warunkowej, możemy zastosować alternatywę dla sytuacji, gdy warunek będzie fałszywy. Zasada działania samej pętli while jest taka sama jak w przypadku bez else.
Struktura pętli while else:
while warunek:
instrukcja_1_bloku_while
instrukcja_2_bloku_while
instrukcja_3_bloku_while
.....
else:
intrukcja_1_dla_bloku_else
intrukcja_2_dla_bloku_else
intrukcja_3_dla_bloku_else
.....
Napisz program, który dla danego przedział [a..b] wypisze liczby naprzemiennie: a, b, a+1, b-1, ... np. dla przedziału [4..10] program powinien wypisać: 4 10 5 9 6 8 7.
a = int(input("Podaj początek przedziału: "))
b = int(input("Podaj koniec przedziału: "))
while a < b:
print(a)
print(b)
a += 1
b -= 1
else:
if a == b:
print(a)
Pętla for w języku Python, powtarza blok instrukcji określoną ilość razy. Podczas jej tworzenia, możemy określić ile razy ma się ona wykonać oraz co jaką wartość ma się zmieniać licznik.
Licznik pętli jest zmienną, która steruje pętlą.
Konstrukcja pętli for wygląda następująco:
for bierzacy_element in zbiór:
instrukcja_1_pętli_for
instrukcja_2_pętli_for
instrukcja_3_pętli_for
....
Wypisz wszystkie liczby naturalne w porządku rosnącym z przedziału [0..10].
for i in range(11):
print(i)
0
1
2
3
4
5
6
7
8
9
10
Wyjaśnienie.
Funkcja range(n) zwraca kolejne liczby całkowite z przedziału [0..n-1] (od zera do n - 1).
Wypisz wszystkie liczby naturalne w porządku rosnącym z przedziału [2..10].
for i in range(2, 11):
print(i)
2
3
4
5
6
7
8
9
10
Wyjaśnienie.
Funkcja range(a, b) zwraca kolejne liczby całkowite z przedziału [a..b-1].
Wypisz wszystkie liczby naturalne parzyste w porządku rosnącym z przedziału [4..12].
for i in range(2, 13, 2):
print(i)
2
4
6
8
10
12
Wyjaśnienie.
Funkcja range(a, b, progres) zwraca rosnący zbiór liczb całkowitych z przedziału [a, b - 1], począwszy od liczby a, a każda następna jest o progres większa (mniejsza) od poprzedniej.
Wypisz wszystkie elementy listy: ["Adam", "Iwona", "Kamila", "Marcin"].
lista = ["Adam", "Iwona", "Kamila", "Marcin"]
for imie in lista:
print(imie)
Adam
Iwona
Kamila
Marcin
Wywołanie instrukcji break w pętli while lub for spowoduje natychmiastowe jej przerwanie.
Napisz program, który wypisze wszystkie naturalne dzielniki podanej liczby naturalnej dodatniej.
x = int(input("Podaj liczbę: "))
for i in range(1, x):
if i > x//2: # jeśli przekroczymy wartość połowy liczby x, to nie ma co dalej szukać
break
if x % i == 0:
print(i)
print(x)
Podaj liczbę: 45
1
3
5
9
15
45
Wywołanie instrukcji continue w pętli while lub for spowoduje ponowienie działania pętli, pomijając instrukcje należące do bloku pętli, znajdujące się poniżej instrukcji continue.
Napisz program, który wypisze wszystkie całkowite nieparzyste liczby z przedziału [a..b].
a = int(input("Podaj początek przedziału: "))
b = int(input("Podaj koniec przedziału: "))
for i in range(a, b+1):
if i % 2 == 0: # jeśli liczba jest parzysta to uruchamiamy kolejną iterację pętli
continue
print(i)
Podaj początek przedziału: 3
Podaj koniec przedziału: 10
3
5
7
9
i=2
n=1
while n<=10:
print(i, end=" ")
i+=2
n+=1
-----------------------------------------
wynik:
2 4 6 8 10 12 14 16 18 20
Zastosowanie pętli for
i=2
for n in range(10):
print(i, end=" ")
i+=2
-----------------------------------------
wynik:
2 4 6 8 10 12 14 16 18 20
n = int(input("Zaczynamy od n="))
for i in range(n, -1, -1):
if i > 0:
print(i, end=", ")
else:
print(i)
-----------------------------------------
wynik:
Zaczynamy od n=12
12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
n = int(input("Podaj wartość początkową: "))
if n % 2 == 0:
n+=1
for i in range(5):
print(n)
n+=2
-----------------------------------------
wynik:
Podaj wartość początkową: 4
5
7
9
11
13
for i in range(1,5):
for j in range(1,5):
print(i,"*",j,"=",i*j)
-----------------------------------------
wynik:
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
suma=0
for i in range(1,11):
suma += i*i
print("Ilość cegieł wynosi: ", suma)
-----------------------------------------
wynik:
Ilość cegieł wynosi: 385
x = int(input("Podaj ilość miesięcy: "))
y = int(input("Podaj kwotę: "))
kwota = 0
for m in range(x):
kwota += y
kwota += kwota*0.08
print("Zgromadzone środki: ", round(kwota, 2))
-----------------------------------------
wynik:
Podaj ilość miesięcy: 1
Podaj kwotę: 100
Zgromadzone środki: 108.0
Podaj ilość miesięcy: 2
Podaj kwotę: 100
Zgromadzone środki: 224.64
Podaj ilość miesięcy: 3
Podaj kwotę: 100
Zgromadzone środki: 350.61
x = int(input("Podaj ilość cegieł w podstawie: "))
y = int(input("Podaj wysokość ściany: "))
z = int(input("Podaj o ile cegieł mniej jest w kolejnej warstwie: "))
suma = 0
while x > 0 and y > 0:
suma += x
x -= z
y -= 1
print("Ilość cegieł ścianie wynosi: ", suma)
-----------------------------------------
wynik:
Podaj ilość cegieł w podstawie: 5
Podaj wysokość ściany: 4
Podaj o ile cegieł mniej jest w kolejnej warstwie: 2
Ilość cegieł ścianie wynosi: 9
Podaj ilość cegieł w podstawie: 5
Podaj wysokość ściany: 2
Podaj o ile cegieł mniej jest w kolejnej warstwie: 2
Ilość cegieł ścianie wynosi: 8
n = int(input("Podaj wartość n: "))
wynik = 1
if n > 1:
for i in range(2, n+1):
wynik *= i
print("Silna ", n, " wynosi ", wynik)
-----------------------------------------
wynik:
Podaj wartość n: 0
Silna 0 wynosi 1
Podaj wartość n: 2
Silna 2 wynosi 2
Podaj wartość n: 3
Silna 3 wynosi 6
Podaj wartość n: 5
Silna 5 wynosi 120
----------
|oooooooo|
|oooooooo|
|oooooooo|
|oooooooo|
|oooooooo|
|oooooooo|
|oooooooo|
|oooooooo|
----------
n = int(input("Podaj n="))
for i in range(n):
for j in range(n):
if i == 0 or i == n-1:
print("-", end="")
else:
if j == 0 or j == n-1:
print("|", end="")
else:
print("o", end="")
print("")
-----------------------------------------
wynik:
Podaj n=5
-----
|ooo|
|ooo|
|ooo|
-----
liczba = int(input("Podaj liczbę: "))
system = int(input("Podaj system liczbowy: "))
print("Liczba", liczba, end="")
while liczba > 0:
cyfra = liczba % 10
if cyfra >= system:
print(" nie", end="")
break
liczba //= 10
print(" należy do zbioru liczb", system)
-----------------------------------------
wynik:
Podaj liczbę: 345723
Podaj system liczbowy: 7
Liczba 345723 nie należy do zbioru liczb 7
Podaj liczbę: 317414775
Podaj system liczbowy: 8
Liczba 317414775 należy do zbioru liczb 8
Wartości początkowe: n=3, k=4
Liczby podzielne przez 4 zaczynamy od 3
1. liczba 4
2. liczba 8
3. liczba 12
4. liczba 16
5. liczba 20
6. liczba 24
7. liczba 28
8. liczba 32
9. liczba 36
10. liczba 40
n = int(input("Zaczynamy od n="))
k = int(input("Liczby podzielne przez k="))
nstart = n #zapamiętujemy wartość początkową
if n % k != 0:
n = n + (k - n % k) # obliczamy wartość początkową
print("Liczby podzielne przez", k, " zaczynamy od", nstart)
for i in range(10):
print(i+1,". liczba",n)
n += k
-----------------------------------------
wynik:
Zaczynamy od n=5
Liczby podzielne przez k=4
Liczby podzielne przez 4 zaczynamy od 5
1 . liczba 8
2 . liczba 12
3 . liczba 16
4 . liczba 20
5 . liczba 24
6 . liczba 28
7 . liczba 32
8 . liczba 36
9 . liczba 40
10 . liczba 44