שיעורי מודול (1/4)
עבור לולאות וטווח
הלולאה for ב-Python משמשת לחזרה על רצף של פריטים:
רשימה, מחרוזת, טווח, גזרה... כל דבר שהוא "ניתן לחזרה".
parole = ["ciao", "mondo", "!"]
for p in parole:
print(p)
# ciao
# mondo
# !התבנית תמיד זהה: for <variable> in <iterable>: ואחריו
הבלוק המוזח שיבוצע פעם אחת עבור כל פריט.
range(...): יצירת מרווחים שלמים
range מייצר רצף עצלן של מספרים שלמים. שלוש צורות:
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. זה חפץ עצלן:
הוא לא מקצה זיכרון לכל המספרים, הוא מייצר אותם אחד בכל פעם.
totale = 0
for i in range(1, 11):
totale = totale + i
totale # 55 (1+2+...+10)חוזר עם אינדקס: enumerate
כאשר אתה צריך את הפריט ואת האינדקס שלו יחד, השתמש ב-enumerate:
parole = ["ciao", "mondo", "!"]
for i, p in enumerate(parole):
print(i, p)
# 0 ciao
# 1 mondo
# 2 !enumerate מייצר (index, value) זוגות שאנו מקצים ישירות לשניים
משתנים באמצעות tuple unpacking (נראה זאת במודול המוקדש ל
מבני נתונים).
איטרציה של שני רצפים במקביל: zip
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)).
נסה זאת בעצמך
חשב את סכום המספרים מ-1 עד 100 (כולל) באמצעות לולאת for מעבר לטווח (...), הקצה אותו ל'סך הכל' והערך אותו.
הצג רמז
range(1, 101) יוצר 1, 2, ..., 100 (בלעדי מימין).
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
בהינתן הרשימה `words = ['uno', 'due', 'tre']`, בנה רשימה של `זוגות` של מחרוזות כמו '0:uno', '1:due', '2:tre' באמצעות enumerate. העריכו `זוגות`.
הצג רמז
enumerate (מילים) מחזירות (מדד, ערך) בכל איטרציה.
הפתרון זמין לאחר 3 ניסיונות
אתגר נוסף
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 ניסיונות