fordövrü ilə sətrin simvollarını və ədədlər ardıcıllığını gəzməkrange()funksiyasının başlanğıc, son və addım parametrlərini tətbiq etmək- Şərt doğru olduqca təkrarlanan
whiledövrü yazmaq breakvəcontinueilə dövrü idarə etmək
Təsəvvür et ki, ekrana 1-dən 100-ə qədər ədədləri çıxarmaq lazımdır. 100 dəfə print yazmaq? Heç də yox! Kompüterlərin ən güclü tərəfi eyni işi yorulmadan təkrarlamaqdır. Bunun üçün dövrlərdən istifadə olunur: bir neçə sətir kod minlərlə dəfə icra oluna bilər.
for dövrü
for dövrü ardıcıllığın elementlərini bir-bir götürür və hər biri üçün eyni bloku icra edir. Aşağıdakı kodda letter dəyişəni növbə ilə 'B', 'a', 'k' və 'u' qiymətlərini alır. Dövrün hər təkrarına iterasiya deyilir.
for letter in 'Baku':
print(letter)▸ Gözlənilən nəticə
B a k u
Ədədlər üzərində dövr üçün range() funksiyası istifadə olunur. O, ədədlər ardıcıllığı yaradır: range(1, 11) 1-dən 10-a qədər ədədləri verir — son qiymət, kəsiklərdə olduğu kimi, daxil deyil. Gəl, 7-yə vurma cədvəlini çap edək:
for i in range(1, 11):
print(f'7 x {i} = {7 * i}')▸ Gözlənilən nəticə
7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 7 x 8 = 56 7 x 9 = 63 7 x 10 = 70
| Çağırış | Verdiyi ədədlər | İzah |
|---|---|---|
range(5) | 0, 1, 2, 3, 4 | 0-dan başlayır, 5 daxil deyil |
range(2, 6) | 2, 3, 4, 5 | başlanğıc və son |
range(0, 10, 3) | 0, 3, 6, 9 | üçüncü ədəd addımdır |
range(5, 0, -1) | 5, 4, 3, 2, 1 | mənfi addım geriyə sayır |
Nəticəni toplamaq
Dövrlərlə tez-tez belə edirik: dövrdən əvvəl «toplayıcı» dəyişən yaradırıq, sonra hər iterasiyada ona nəsə əlavə edirik. Məsələn, 1-dən 100-ə qədər bütün ədədlərin cəmini tapaq:
total = 0
for n in range(1, 101):
total += n
print('Sum:', total)▸ Gözlənilən nəticə
Sum: 5050
for i in range(1, 5):
print('*' * i)▸ Gözlənilən nəticə
* ** *** ****
range(1, 5)-i range(1, 8) ilə əvəz et.while dövrü
for təkrarların sayı əvvəlcədən məlum olanda rahatdır. Bəs neçə dəfə təkrarlanacağını bilmiriksə? Onda while dövrü köməyə gəlir: o, şərt doğru olduqca bloku təkrarlayır. Murad 100 manatlıq qulaqcıq almaq üçün hər həftə 15 manat yığır. Neçə həftə lazım olacaq?
price = 100
saved = 0
weeks = 0
while saved < price:
saved += 15
weeks += 1
print(f'After {weeks} weeks Murad has {saved} AZN.')▸ Gözlənilən nəticə
After 7 weeks Murad has 105 AZN.
break və continue
break dövrü dərhal tamamilə dayandırır — axtardığını tapanda əlverişlidir. Məsələn, həm 5-ə, həm də 7-yə bölünən ilk ədədi axtaraq:
for n in range(1, 100):
if n % 5 == 0 and n % 7 == 0:
print('Found:', n)
break▸ Gözlənilən nəticə
Found: 35
continue isə dövrü dayandırmır, yalnız cari iterasiyanın qalanını keçir və növbəti iterasiyaya keçir. Aşağıdakı kod boşluqları nəzərə almadan mətndəki simvolları sayır:
text = 'Python is fun'
count = 0
for ch in text:
if ch == ' ':
continue
count += 1
print('Letters:', count)▸ Gözlənilən nəticə
Letters: 11
for dövrü və range() ilə 1-dən 5-ə qədər ədədlərin kvadratlarını çap et — hər birini ayrıca sətirdə, 3 x 3 = 9 şəklində.
# print the squares of 1..5 like: 3 x 3 = 9▸ Gözlənilən nəticə
1 x 1 = 1 2 x 2 = 4 3 x 3 = 9 4 x 4 = 16 5 x 5 = 25
while dövrü ilə n = 4096 ədədinin rəqəmlərinin cəmini tap və nəticəni Digit sum: sözlərindən sonra çap et. Dövr n sıfıra bərabər olana qədər davam etməlidir.
n = 4096
total = 0
# while n is greater than 0:
# add the last digit of n to total
# remove the last digit from n
# print Digit sum: and total▸ Gözlənilən nəticə
Digit sum: 19
Əsas fikirlər
forardıcıllığın hər elementi üçün bloku bir dəfə icra edir.range(start, stop, step)ədədlər verir;stopdaxil deyil.whileşərt doğru olduqca təkrarlayır — şərtin nə vaxtsa yalan olmasına diqqət et.breakdövrü tamamilə dayandırır,continueisə növbəti iterasiyaya keçir.- Toplayıcı dəyişən dövrdən əvvəl yaradılır və hər iterasiyada yenilənir.
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.
range(1, 5) hansı ədədləri verir?