נושא
תנאים ולולאות
איך תוכנית מחליטה מה לעשות, וכמה פעמים.
שלוש הצורות
| מה עושה | מתי | |
|---|---|---|
if / elif / else |
בוחר בלוק אחד | החלטה |
while |
חוזר כל עוד תנאי נכון | לא יודעים כמה פעמים |
for |
חוזר פעם לכל איבר ברצף | רשימה, מחרוזת, range |
לכולן אותו מבנה: שורת פקודה שמסתיימת בנקודתיים, ובלוק מוזח בארבעה רווחים.
if
>>> grade = 85
>>> if grade >= 90:
... print("A")
... elif grade >= 80:
... print("B")
... else:
... print("C")
...
B
- הבדיקה לפי הסדר, ועוצרת בראשון שמתקיים.
85 >= 80נבדק רק כי85 >= 90נכשל elifו-elseלא חובה.elseרק אחד, ותמיד אחרון
while
>>> count = 3
>>> while count > 0:
... print(count)
... count -= 1
...
3
2
1
משהו בתוך הלולאה חייב לשנות את התנאי. אחרת היא לא תיגמר.
for
>>> for letter in "abc":
... print(letter)
...
a
b
c
>>> for i in range(1, 10, 4):
... print(i)
...
1
5
9
range(start, stop, step), ו-stop לא נכלל. כמו בחיתוך.
break ו-continue
>>> for n in range(10):
... if n == 3:
... continue
... if n == 6:
... break
... print(n, end=" ")
...
0 1 2 4 5
continue דילג על 3. break עצר ב-6, ולכן 6 עד 9 לא הודפסו.
איפה זה תופס אתכם
inputבתנאי.if input() == 5לא יתקיים אף פעם.int(input())=בתנאי.if x = 5:הואSyntaxError. צריך==- שכחתם לקדם את המונה ב-
while: לולאה אינסופית. Ctrl+C עוצר inשלforאינוinשל בדיקה. ב-for x in lstהוא משים. ב-if x in lstהוא שואל- משתנה שנוצר רק בתוך
ifלא קיים אם הבלוק לא רץ
בדיקה עצמית
- כמה פעמים ירוץ
for i in range(3, 3):? - מה ידפיס
for c in "hey": print(c * 2)? - מה חסר כאן:
while x < 10: print(x)? - איך מדפיסים רק את המספרים הזוגיים בין 0 ל-10, בשורה אחת של
for?
תשובות. 1: אפס פעמים. ההתחלה כבר שווה לסוף. 2: hh, ee, yy.
3: שורה שמגדילה את x. 4: for n in range(0, 11, 2): print(n).