Məzmuna keç
Educora
Başlanğıc16 dəq5 / 42

Dövrlər: for və while

İşləri təkrarlamağı öyrən: for və range(), while, həmçinin dövrü idarə edən break və continue.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • for dövrü ilə sətrin simvollarını və ədədlər ardıcıllığını gəzmək
  • range() funksiyasının başlanğıc, son və addım parametrlərini tətbiq etmək
  • Şərt doğru olduqca təkrarlanan while dövrü yazmaq
  • break və continue ilə 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.

Python
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:

Python
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, 40-dan başlayır, 5 daxil deyil
range(2, 6)2, 3, 4, 5baş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, 1mə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:

Python
total = 0
for n in range(1, 101):
    total += n
print('Sum:', total)
▸ Gözlənilən nəticə
Sum: 5050
Python
for i in range(1, 5):
    print('*' * i)
▸ Gözlənilən nəticə
*
**
***
****
Sətri ədədə vurmaq və dövr birlikdə sadə naxış yaradır. 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?

Python
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:

Python
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:

Python
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
Tapşırıq

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ə.

Tapşırıq · Python
# 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
Tapşırıq

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.

Tapşırıq · Python
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

  • for ardıcıllığın hər elementi üçün bloku bir dəfə icra edir.
  • range(start, stop, step) ədədlər verir; stop daxil deyil.
  • while şərt doğru olduqca təkrarlayır — şərtin nə vaxtsa yalan olmasına diqqət et.
  • break dövrü tamamilə dayandırır, continue isə 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.

1 / 10
range(1, 5) hansı ədədləri verir?