דילוג לתוכן המרכזי
מודול 2 · שיעור 1 מתוך 45/36 בקורס~10 min
שיעורי מודול (1/4)

עבור לולאות וטווח

הלולאה for ב-Python משמשת לחזרה על רצף של פריטים: רשימה, מחרוזת, טווח, גזרה... כל דבר שהוא "ניתן לחזרה".

Python
parole = ["ciao", "mondo", "!"]
for p in parole:
    print(p)
# ciao
# mondo
# !

התבנית תמיד זהה: for <variable> in <iterable>: ואחריו הבלוק המוזח שיבוצע פעם אחת עבור כל פריט.

range(...): יצירת מרווחים שלמים

range מייצר רצף עצלן של מספרים שלמים. שלוש צורות:

Python
range(5)         # 0, 1, 2, 3, 4
range(2, 6)      # 2, 3, 4, 5
range(0, 10, 2)  # 0, 2, 4, 6, 8     (step)
range(5, 0, -1)  # 5, 4, 3, 2, 1     (negative step)

range הוא בלעדי בצד ימין, כמו slice. זה חפץ עצלן: הוא לא מקצה זיכרון לכל המספרים, הוא מייצר אותם אחד בכל פעם.

Python
totale = 0
for i in range(1, 11):
    totale = totale + i
totale  # 55  (1+2+...+10)

חוזר עם אינדקס: enumerate

כאשר אתה צריך את הפריט ואת האינדקס שלו יחד, השתמש ב-enumerate:

Python
parole = ["ciao", "mondo", "!"]
for i, p in enumerate(parole):
    print(i, p)
# 0 ciao
# 1 mondo
# 2 !

enumerate מייצר (index, value) זוגות שאנו מקצים ישירות לשניים משתנים באמצעות tuple unpacking (נראה זאת במודול המוקדש ל מבני נתונים).

איטרציה של שני רצפים במקביל: zip

Python
nomi = ["Ada", "Linus", "Grace"]
anni = [36, 54, 79]
for n, a in zip(nomi, anni):
    print(f"{n} ha {a} anni")

zip עוצר ברצף הקצר ביותר.

range() והעצלות של Python

ב-Python, הפונקציה range() לא מקצה רשימה ממשית בזיכרון: היא מחזירה מחולל עצלן שמניב מספרים אחד בכל פעם כמתבקש (לדוגמה, בלולאה for). זה מאפשר איטרציה על פני מיליוני מספרים שלמים ללא נפח זיכרון RAM. כדי לבדוק ערכי טווח כרשימה, אתה יכול להעביר אותה במפורש עם list(range(5)).

נסה זאת בעצמך

פעילות גופנית#python.m2.l1.e1
ניסיונות: 0טוען...

חשב את סכום המספרים מ-1 עד 100 (כולל) באמצעות לולאת for מעבר לטווח (...), הקצה אותו ל'סך הכל' והערך אותו.

טוען עורך...
הצג רמז

range(1, 101) יוצר 1, 2, ..., 100 (בלעדי מימין).

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#python.m2.l1.e2
ניסיונות: 0טוען...

בהינתן הרשימה `words = ['uno', 'due', 'tre']`, בנה רשימה של `זוגות` של מחרוזות כמו '0:uno', '1:due', '2:tre' באמצעות enumerate. העריכו `זוגות`.

טוען עורך...
הצג רמז

enumerate (מילים) מחזירות (מדד, ערך) בכל איטרציה.

הפתרון זמין לאחר 3 ניסיונות

אתגר נוסף

פעילות גופנית#python.m2.l1.e3
ניסיונות: 0טוען...

Calculate the sum of all even numbers from 2 to 20 inclusive using a `for` loop over a `range`. Store the final sum in `even_sum` and evaluate it.

טוען עורך...
הצג רמז

השתמש בטווח (2, 21, 2) כדי לחזור רק על מספרים שלמים זוגיים מ-2 עד 20.

הפתרון זמין לאחר 3 ניסיונות