הפרק הקודם:
פייתון 5 - רשימותלולאה כמו השם שלה היא משהו שחוזר על עצמה.
כדור הארץ מסתובב סביב השמש מה שגורם לחלק מכדור הארץ להיות באור יום, והחלק האחר בלילה.
מחזוריות זו אפשר לייצג בפסודו קוד:
1 | כל עוד השמש חיה: |
כפי שאתם יודעים השמש לא תחיה לעד!
מה קורה אבל כשהשמש לא תחיה? מן הסתם כבר לא יהיה כדור הארץ, אך גם המחזוריות של יום-לילה כבר לא יהיה.
זו דוגמא לתנאי עצירה
.
מתישהו אנחנו צריכים לעצור את הלולאה אחרת היא תקרה לעד.
משחק מחשב עובד בלולאה כאשר הצעד הראשון שלה זה לעדכן את המשחק - להזיז את השחקנים, לבדוק התנגשויות וכדו’…
והצעד השני זה לצייר על המסך את כל השחקנים והסביבה.
אז בפסודו קוד זה נראה כך:
1 | כל עוד לא יצאנו מהמשחק: |
או בקוד פייתוני:
1 | isPlaying = True |
לולאה זה קטע קוד שרץ פעם אחת או יותר.
הלולאה הכי בסיסית היא -
בזמן שתנאי מתקיים, תריץ את הקוד הזה,
אם התנאי לא מתקיים, תריץ קוד אחר.
ובקוד זה נראה כך:
*משהו שכדאי לשים לב אליו, קוד פייתוני הוא כמעט כמו אנגלית, קוד צריך להיות מובן רק מקריאה ראשונה שלו.
1 | condition = True |
אם נתרגם את זה מאנגלית זה ייקרא כך:
בזמן שהתנאי שלנו מתקיים, תדפיסו למסך, תגדילו את הסופר באחד,
אם הסופר שווה ל 10, יש לשים בתנאי שלנו לא נכון.
שימו לב שאחרי ששמנו במשתנה שלנו “לא נכון” אז התנאי שלנו יפסיק להתקיים.
כעת תנסו לאתחל את המשתנה condition
לFalse
, מה בעצם מודפס?
יודפס Bye world.
התנאי שלנו לא מתקיים בלולאה הזו, ולכן הelse יירוץ במקומו.
1 | base = int(input('Triangle base: ')) |
השתמשנו בשני לולאות, אחת על מנת להדפיס שורה חדשה, והשנייה על מנת להדפיס את השורה של הכוכביות.
אם ננסה להסביר את האלגוריתם בעברית זה יהיה יחסית פשוט:
אנחנו רוצים להדפיס כוכבית אחת + כוכביות נוספות עבור כל שורה.
שורה ראשונה נדפיס כוכבית אחת,
שורה שנייה נדפיס כוכבית שני כוכביות
ועד למספר שקלטנו כבסיס.
זה למה התנאי של הלולאה השנייה הוא עד לסופר הראשון של השורות.
קודם אנחנו רוצים לדעת כמה שורות אנחנו רצים, וכל שורה אנחנו מדפיסים כוכביות לפי השורה.
זוכרים משיעור קודם את הרשימות?
כעת נוכל לשלב אותם עם לולאות.
אם אנחנו משתמשים בהדפסה הבסיסית למערך אז אנחנו מקבלים תוצאה די מוזרה:
1 | arr = [1,2,3] |
אנחנו רוצים להדפיס את הרשימה בצורה יפה יותר,
נניח יש לנו מערך שמות ואנחנו רוצים ליצור רשימה שמית עם מספרים, למשל:
נשתמש בזה ככה:
1 | arr = ['Ilya' , 'Vasily' , 'Dana'] |
זוכרים את ה-f
?
בעזרתו אנחנו יכולים לפרמט מחרוזת בצורה יפה מבלי לחבר מחרוזות.
אחרת היינו כותבים ככה:
1 | print(string(index) + '. ' + name) |
אם המשתמש כתב ‘mer’ על התכנית להחזיר mercury.
1 | names = ['mercury', 'venus' , 'earth', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune'] |
לולאת הfor in range היא לולאה שמקלה עלינו לרוץ מספר פעמים מסוים,
כפי שראינו מקודם אנחנו יכולים לרוץ עם while ולעדכן משתנה סופר, ואז לבדוק אותו אם הוא הגיע למספר מסוים:
1 | counter = 0 |
במקום זה פייתון מאפשר לנו בקלות מאוד לרוץ על רשימה של מספרים בעזרת הפעולה range:
1 | for i in range(5): |
1 | num = int(input('Enter a number: ')) |
הfor הזה הוא שילוב של for in רגיל וfor range.
הוא נותן לכם גם את האלמנט ברשימה וגם את האינדקס שלו.
תנסו את הקוד הבא:
1 | for index, value in enumerate(["p", "y", "t", "h", "o", "n"]): |
כפי שראינו עד כה יש מילים שמורות בפייתון שעוזרות לנו לנהל איך הקוד שלנו רץ,
if,elif,else יוצרות לנו תנאים - קוד ירוץ רק בתנאי מסוים שקורה.
לולאות עוזרות לנו לבצע קוד מסוים מספר פעמים בהתאם לתנאי או למספר שאנו קיבלנו.
אזי פייתון מאפשר שליטה נוספת בלולאות שלנו - במידה ונרצה להמשיך או לבצע סיום לולאה מוקדמת.
break - לצאת מהלולאה
continue - לצאת מהלולאה ולהמשיך אותה הלאה
דוגמא:
1 | tries = 10 |
1 | Enter your name: iluga |
1 | 0 1 1 2 3 5 8 13 21 34.... |
1 | [0,1,1,2,3,5,8] |
1 | name = input('Enter your name: ') |
זוכרים שמחרוזת זה בעצם מערך של תווים? אנחנו יכולים בקלות מאוד לגשת לכל תו במחרוזת בעזרת הלולאה!
1 | limit = int(input('Enter the limit of fibonacci: ')) |
סדרת פיבונאצ’י מורכבת ממספרים חיוביים שלמים לכן אין צורך לבדוק במספר שהוא קטן מ0
.
לאחר מכן זה מאוד פשוט לחשב, המערך מאותחל עם שלושת המספרים הראשונים וזה מאוד נפוץ לפתור את התרגיל ככה אחרת זה קוד מעט מסובך יותר,
תזכרו שקוד פשוט יותר הוא קוד טוב יותר!
מאוד קל לכתוב קוד מורכב אך מאוד קשה לכתוב אחד פשוט.
הלולאה רצה תמיד אך התנאי שלה פשוט לא בתחילת הלולאה אלה בגוף שלה!
אנחנו בודקים אם החישוב שלנו עולה על ההגבלה של הסדרה שקיבלנו מהמשתמש, ואם כן אנחנו יוצאים ממנה.
אחרת אנחנו ממשיכים בה רגיל ולבסוף מדפיסים.
1 | userInput = '' |
השלב הראשון זה לקחת מספרים מהמשתמש, כרגע אנחנו לא בודקים אם המחרוזת שהוא הקיש זה באמת מספר - זה נושא מתקדם יותר.
לכן אנחנו מניחים שזה מספר אלה אם כן הוא כתב 'done'
.
לאחר שקיבלנו את כל המספרים שלנו, אנחנו רצים על כל מספר ומחשבים:
מוסיפים אותו לסופר של הממוצע ולבסוף אנחנו מחלקים אותו בכמות האלמנטים במערך.
את המספר המינימאלי והמקסימלי בודקים ע”פ מספר אסטרונומי יש דרך אחרת לקחת את המספרים האלו אבל כרגע זו דרך מצוינת לאתחל אותם ידנית.