
ŹRÓDŁO : http://szgrabowski.kis.p.lodz.pl/Python-podstawy.html
Pętla for.
Trudno wyobrazić sobie programowanie bez pętli. W Pythonie zdecydowanie najczęściej używaną jest pętla for:
for i in range(10): print i,
wypisze liczby od 0 do 9 oddzielone spacjami. Co znaczy range? Generuje ono zakres, tj. listę złożoną z liczb naturalnych tworzących szereg arytmetyczny. Są 3 warianty range:
range(n) # n > 0, lista [0, 1, 2, ..., n-1] range(m, n) # m < n, lista [m, m+1, …, n-1]; jeśli m >= n, to lista pusta range(m, n, step) # jak wyżej, ale co step wartości
Np.:
range(0, 12, 2) # [0, 2, 4, 6, 8, 10] range(1, 7) # [1, 2, 3, 4, 5, 6]
Powyższy opis nie jest kompletny, można i tak:
range(5, 1, -1) # [5, 4, 3, 2] range(8, -1, -2) # [8, 6, 4, 2, 0]
A teraz iterowanie po liście:
for i in varia: print i
A może z pominięciem pierwszego elementu? Proszę:
for i in varia[1:]: print i
Można iterować po stringu (który też jest „sekwencją”):
s = "Witaj!" for i in s: print i,
Z pętli można szybciej wyjść poprzez break (znów „inspiracja” z języka C):
for i in range(20):
print i,
if i % 5 == 4:
breakOdpowiedz, ile liczb pojawi się na ekranie.
Zadania:
3. Wygeneruj na ekranie tabliczkę mnożenia 10 x 10 (nie musi wyglądać ładnie, ale niech w każdym wierszu będzie dokładnie 10 liczb). Wskazówka: pętle możesz zagnieżdżać.
4. Znajdź i wypisz na ekranie wszystkie liczby pierwsze z przedziału [20, 100].
5. Policz 15!, wypisz na ekranie tylko 3 pierwsze cyfry tej liczby.
6. Wczytaj liczbę całkowitą od użytkownika i utwórz z niej string wstawiający kropki co 3 cyfry od końca (zastosowanie: finansowe, np. "1.600.000" wygląda czytelniej niż 1600000).
Pętla while.
To chyba dobra wiadomość: pętla while jest drugą i ostatnią pętlą w Pythonie. Warunek sprawdzany jest na początku:
x = -1 while x < 3: print x, x += 1 print "koniec"
Jak zatem „zasymulować” pętlę do...while, znaną z C (czy jej odpowiednik repeat...until z Pascala)? Aby warunek sprawdzany był na końcu?
Standardowy chwyt wygląda następująco:
while True:
...
if warunek_wyjścia:
break
# ciąg dalszy programuPrzykład: chcemy zsumować odwrotności kolejnych liczb naturalnych, aż suma przekroczy 5. Kod:
j = 0
suma = 0.0
while True:
j += 1
suma += 1/float(j) # można i tak zamiast np. 1./j
if suma > 5:
break
print "zsumowano", j, "składników, suma wynosi", suma// Wyszło niezbyt po polsku: "83 składników", ale nie będziemy się teraz tym martwić
Więcej o zasadzie "True/False" w następnej części kursu


Offline