פייתון

נושא

תנאים ולולאות

איך תוכנית מחליטה מה לעשות, וכמה פעמים.

מגיע מיחידות: 4, 7

בעמוד הזהשלוש הצורותifwhileforbreak ו-continueאיפה זה תופס אתכםבדיקה עצמית

שלוש הצורות

מה עושה מתי
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 לא קיים אם הבלוק לא רץ

בדיקה עצמית

  1. כמה פעמים ירוץ for i in range(3, 3):?
  2. מה ידפיס for c in "hey": print(c * 2)?
  3. מה חסר כאן: while x < 10: print(x)?
  4. איך מדפיסים רק את המספרים הזוגיים בין 0 ל-10, בשורה אחת של for?

תשובות. 1: אפס פעמים. ההתחלה כבר שווה לסוף. 2: hh, ee, yy. 3: שורה שמגדילה את x. 4: for n in range(0, 11, 2): print(n).