בשפת התכנות Python (גם Pythonאו "פיתון") יש כמה דרכים לולאה של פעולה מסוימת. הכלים העיקריים ליישום איטרציה כלשהי ב- Python הם בזמן ולולאות. לולאת הזמן היא תכליתית יותר מכפי שהיא, ולכן היא פועלת לאט יותר. עם זאת, אין זה אומר שהוא טוב יותר! לולאה for משמשת לעתים קרובות יותר, מכיוון שבעזרתה מיושמות המשימות המורכבות ביותר ליצירת תוכניות רב-דרגיות ורב-מותנות.
פייתון: לולאה עם מצב-על
לולאות לאחר מצב הן בזמן לולאותהם המבנים הארגוניים האוניברסאליים ביותר בסביבת תכנות זו. לולאת הזמן עובדת על עיקרון "כל עוד". משמעות הדבר היא: כל עוד מצב כלשהו מחזיר ערך אמיתי, הוא יעבוד! קונסטרוקציה זו מכונה "מחזור", מכיוון שהבקרה הפונקציונלית חוזרת על עצמה במחזוריות, החל מהערך הראשוני. יציאה מלולאת הזמן בפיתון תיושם ברגע בו הערך ישתבש. ברגע זה, המתורגמן מעביר את ביצוע התוכנית לסגמנט הפונקציונלי-סמנטי הבא, כלומר קו חדש שנמצא אחרי החסימה עם התנאי שלאחר המועד.
בשפת התכנות Python, לולאות עם מצב זמן יש את התחביר הבא:
1. בזמן (מצב): 2. ביטוי |
ביטוי יכול להיות אמירה יחידה אוכמה. התנאי הוא תמיד איזה ערך אמיתי או שאינו אפס. בנייה כזו עובדת כל עוד התנאי הנתון נכון.
שימוש בלולאת זמן בפייתון באמצעות דוגמה
שקול לולאת זמן. פיתון מבנה את איטרציותיו באופן די מעניין:
a = 0 |
הכרזנו על המשתנה "a" והגדרנו אותו לאפסערך. ואז קבענו את התנאי "בעוד a <7", כלומר עד שהמשתנה "a" הוא פחות מהמספר "7", אז המחזור שלנו יבוצע עד שהוא ישתבש.
והוא ישתבש (כלומר, הוא ייצא מהלולאה) כאשר המשתנה יהיה גדול יותר מהמספר "7". כדי שזה יקרה, בכל פעם זה גדל ב -1, מה שאנחנו מציינים בשורה "a = a + 1".
אם אתה מנהל עיצוב זה, האות "A" תוצג 7 פעמים בעמודה!
א |
לולאה אינסופית של פייתון
איך לעשות אינסוף בזמן לולאה בפייתון?זה בכלל לא קשה לנחש, כי המחזור פועל עד שהוא מקבל ערך כוזב, ואם הערך הזה פשוט לא שם? התשובה לשאלה, ככל הנראה, כבר ברורה לכולם. באילו מקרים נדרש לולאה אינסופית כדי לפתור בעיה? דוגמא נתונה תהיה יישום של תוכנית כמו שעון. כאן, ללא ספק, יהיה צורך לעסוק בלולאה אינסופית, שתעדכן לצמיתות ותראה את השעה.
לולאה אינסופית היא לעיתים קרובות הטעות של מתכנתים מתחילים ששוכחים להוסיף שינויים בתנאי הלולאה.
בואו נסתכל בקטע הבא של קוד Python. הלולאות במקרה זה אומנות בלי סוף (אחרי הסמל "#" יש תגובה):
מספר = 1 # הצהיר את המספר המשתנה והקצה לו את הערך 1 בעוד שמספר <10: # צור מצב תנאי בו המספר הוא פחות מ -10 הדפס "שלום" # מלא את התנאי (הדפס את ההודעה "שלום") |
אסור למהר לתכנית כזו להרכיב,כי זה יבוצע בלי סוף. אנו קובעים תנאים כאלה שבהם לעולם לא יהיה ערך כוזב: התנאי "מספר <10" במקרה זה הוא בלתי משתנה ואמיתי, ולכן איטרציה תבוצע ברציפות ותציג את המספר ה- N של ההודעות "שלום". כדי לעצור את תהליך ההדרכה הנצחי, תצטרך ללחוץ על שילוב המקשים Ctrl + C במעטפת.
פייתון: תחביר. תוך כדי ולולאות
כאמור לעיל, בשפהתכנות פייתון ישנן מספר דרכים לארגן את החזרה של קבוצת ביטויים. תצורת לולאה מצילה את ההצלה, השונה במקצת ממקבילתה לזמן ההוא, מכיוון שהקמתה מורכבת מעט יותר מסתם מצב פוסט. לא נדבר על האוניברסליות של לולאה זו, מכיוון שהיא פשוט לא קיימת, עם זאת, ניתן לציין כי הלולאה for פועלת הרבה יותר מהר מאשר בזמן. הדרכים הרבות לפתור ומהירות התכנון הזו עולות על ביצועי המחזור עם מצב התנאי, כך שהוא משמש לעתים קרובות יותר לביצוע משימות טריוויאליות רבות.
מהם האתגרים עבור לולאת for?ללא ספק, אותו דבר כמו בזמן - חוזר על כל תהליכים. בתוכניות שבוצעו ב- "Python" נעשה שימוש נרחב בלולאת ה- for, המסוגלת ליישם חצייה של קבוצה נתונה של אלמנטים ולבצע איטרציות שונות עליהן בגופה. ניתן ליישם את היכולות של קונסטרוקציה זו על עיבוד מיתרים או רשימות באותו אופן כמו כל אובייקט אחר שאפשר להעלותו על הדעת.
פייתון למשל
נניח שיש לנו רשימת מספרים, ואנחנו צריכים להגדיל כל רכיב (כלומר מספר) בשלוש יחידות. אנו יכולים לבצע משימה זו על ידי לולאה, באמצעות לולאה for.
בואו נסתכל על דוגמא קטנה בה נבצע את הפעולות המתאימות לכך (אחרי סמל "#" יש תגובה):
spisok_chisel = [5, 15, 25, 35, 45, 55, 65, 75, 85, 95] # הכריז מערך המכיל 10 ספרות count = 0 # יצר דלפק עם ערך אפס עבור אלמנטים ב- spisok_chisel: # חזרו על המערך וכתבו אותו לאלמנטים spisok_chisel [count] = אלמנטים + 3 # המספר מהמערך מוגדל בשלושה count = count + 1 # עבור למספר הבא לפי אינדקס |
התוצאה של הבנייה לעיל תהיה כדלקמן:
list_number = y8, 18, 28, 38, 48, 58, 68, 78, 88, 98 |
В нашем примере есть переменная count, которая עלינו לסמן את הערכים המשתנים במערך "spisok_chisel". משתנה הספירה רושם את ערכי האינדקס של כל רכיב במערך (כל מספר ברשימה). המשתנה "אלמנטים" קושר את הערכים המתקבלים ברשימה. בלולאה for, אנו רואים כיצד מיושם העיבוד של כל אובייקט מספרי ברשימה. בתוך הלולאה, כל האלמנט החיובי והמשולש הנוכחי מתווסף לכל אובייקט מספרי עם אינדקס "הספירה". ואז אינדקס ה"ספירה "שלנו מוגדל באחד, וזרימת התוכנית חוזרת לתחילת ההכרזה על ה- for build. כך, הלולאה תעבוד עד שהיא מעבדת כל אלמנט במערך שצוין על ידי התנאי. אם חסר אלמנט כלשהו אך מצוין לפי תנאי, תהליך הלולאה יושלם. בואו לשים לב לניואנס נוסף אחד: אם לא תכתבו את השורה "count = count + 1", אז, למרות העובדה שעצמי המערך מעובדים בהצלחה, התוצאה תתווסף כל העת לאובייקט המספרי הראשון עם אינדקס אפס.
כעת אנו יכולים לזכור את עקרונות העבודהתוך כדי לולאה וגילוי ההבדל (זכור שבפייתון, יציאה מלולאה עם מצב-מצב מבוססת על קריטריונים לוגיים - נכון (הלולאה ממשיכה לעבוד) או שקרית (הלולאה נעצרת)).
כיצד לטפל בערך המחרוזת בפיתון באמצעות לבנייה?
בכל שפת תכנות יש מחזורים,והם פועלים, ככלל, על אותו עיקרון, ההבדלים מורגשים רק בתחביר. עם זאת, לולאת ה- for בשפת הפיתון אינה רגילה וטריוויאלית, מכיוון שעיקרון פעולתה אינו מוגבל לדלפק. עיצוב זה מונה כל אלמנט בנפרד. כל זה קל להסביר באמצעות מיתרים כדוגמה, אך ראשית, נסתכל על הרכב הלולאה for:
עבור משתנה
המשתנה מאחסן את תוצאת הלולאה
במשתנה_2
מילת המפתח "ב" היא תנאי מוקדםבעבודה עם לולאת for. ממשתנה_2 אנו מוציאים את הערך שנחזור. לצורך הבהירות והבהירות, בואו נסתכל על דוגמא קטנה לאיך לעבוד ולחזור על מיתרים בפייתון:
char = ‘תכנות’ # הצהיר על משתנה והקצה לו ערך מחרוזת עבור slovo ב- char: # צור משתנה slovo, אשר יאחסן מדדי ספירה ממשתנה char print (slovo, end = ‘^ ') # אנו מדפיסים slovo ואחרי כל אות אנו מכניסים סמל - ציפור. |
תוצאת התסריט:
N ^ p ^ o ^ r ^ p ^ a ^ m ^ m ^ u ^ p ^ o ^ b ^ a ^ n ^ u ^ e |
המשך בהצהרה
מפעיל המשך מיישם את המעבר למחזור הבא שצוין על ידי התנאי, ללא קשר לשאר בגוף המחזור. אתה יכול להשתמש במפעיל המשך בשני לולאות - לזמן מה.
קחו דוגמה:
לספירה ב'חזור על כל אות למעט בערך ' אם הספירה == 'o': המשך הדפס (ספירה * 2, סוף = ") |
התוצאה תהיה כדלקמן:
Ppvvttrriimm kkazhzhduyuyu bbuukkvuu ,, kkrrmmee |
כאשר המטפל מצא את האות "o" בשורה'בוא נחזור על כל אות, למעט', ביצוע התוכנית הופנה מיד לשורה לאחר המילה 'המשך', שם, לפי תנאי, הוגדר לשכפל כל אות.
הפסקה של הצהרה
מילת המפתח "הפסקה" מוכנסת בכל מקוםהיכן שיש לקטוע את הלולאה מבלי להמתין להשלמתה, אשר צוין על ידי התנאי. בדרך כלל משתמשים בבנייה זו בעת כתיבת תוכניות עם הרבה היגיון ותנאים.
בואו נסתכל על דוגמה קטנה לאופן שבו הצהרת הפסקה עובדת:
לספירה ב'חזור על כל אות למעט בערך ' אם הספירה == 'o': לשבור הדפס (ספירה * 2, סוף = ") |
התוצאה תהיה כדלקמן:
עמ ' |
כאשר המטפל מצא את האות "o" בשורה 'חזור על כל אות מלבד, o', ביצוע התוכנית הופסק באופן מיידי, למרות העובדה שהשורה הבאה מכילה כמה תנאים ללולאה.
מילת הקסם אחרת
אתה יכול להשתמש במפעיל אחר בלולאה מכל סוג שהוא.לשם מה זה? זה בודק אם הלולאה יצאה בשיטות הפסקה או בדרך הרגילה. החסימה עם הכללים שצוינו בתוך האחר תתחיל ליישם רק אם הלולאה יצאה מבלי להשתמש בבניית הפסקה.
בואו נסתכל על דוגמא קטנה:
לספירה 'שלום עולם': אם ספירה == 'אני': לשבור אַחֵר: הדפס ('אין לביטוי שלך את האות' אני '') |
התוצאה של ביצוע התסריט:
אין אות "אני" בביטוי שלך |
דוגמאות לולאה הפוכה בשפת תכנות פייתון
כיצד מיישמים לולאה הפוכה בפייתון? בואו נדמיין שאנחנו כותבים תוכנית שמזהה מחרוזת תווים ומדפיסה אותה בסדר הפוך. כיצד ליישם זאת?
שקול את הדוגמה הבאה:
slovo = 'תכנות' new_slovo = [] לספירה בטווח (len (ים), 0, -1): new_slovo.append (s [i-1]) חדש_סלובלו ['p', 'p', 'o', 'g', 'p', 'a', 'm', 'm', 'and', 'p', 'o', 'in', ' a ',' n ',' ו- ',' e '] הדפס (new_slovo) ['p', 'p', 'o', 'g', 'p', 'a', 'm', 'm', 'and', 'p', 'o', 'in', ' a ',' n ',' ו- ',' e '] הדפס (''. הצטרף (new_slovo)) |
תוצאת התסריט:
einavorimmargorp |
לולאות מקוננות
בשפת התכנות של פייתון קיימות לולאותמקונן גם, כלומר, מונח בגופו של אחר. לכל מחזור יכול להיות מחזור מקונן משלו, וכך תוכלו לבנות סולם עד אינסוף. באיטרציה הראשונה, הלולאה החיצונית מכנה את הלולאה הפנימית, שמבוצעת עד להשלמתה שלה, ואז כל השליטה מנותבת לגוף הלולאה החיצונית. לכל שפה יש את המוזרויות שלה של לולאות מקוננות, בואו נראה איך הן מסודרות בשפת התכנות של פייתון.
אם משתמשים בלולאות מקוננות, Python מציע את התחביר הבא:
למשתנה במשתנה רציף: למשתנה במשתנה רציף פעולה (פעולות) פעולה (פעולות) |
המוזרויות של לולאות מקוננות כוללות את העובדה ששבתוך לולאה מכל סוג שהוא, ניתן להשתמש בכל סוג של לולאה גם! משמעות הדבר היא כי לולאה עבור או, שוב, בעוד, ולהיפך, יכולה להיות מקוננת תוך זמן (או עבור) לולאה.