לולאת FOR בפייתון

  • פותח הנושא et28
  • פורסם בתאריך

et28

New member
לולאת FOR בפייתון

לא מצליח להבין את לולאת FOR. כרגע אני לומד פייתון דרך אתר codeacademy וגוגל... אני מכיר לולאות FOR בפסקל ו- C שלמדתי בזמנו, ויתכן שזה מה שמבלבל אותי, אבל אני יודע ש:
1. לולאת FOR מקבל איזשהו ערך ממנו המשתנה מתחיל.
2. הלולאה מסתיימת כשהמשתנה מגיע לערך שמוגדר שהלולאה תפסיק.
כאילו בפייתון הלולאה לוקחת את אורך המערך כמספר שאליו צריך להגיע, נכון?

שאלה שניה: מה לא נכון בלולאה בקוד הבא? (הקוד הבא נכתב על ידי, השאלה לקוחה מאתר codeacademy)
קוד:
start_list = [5, 3, 1, 2, 4]
square_list = []

# Your code here!
for number in start_list:
    square_list[number] = square_list.append(number**2)
       
square_list = start_list.sort()
print square_list
המטרה של הקוד היא:
Write a for-loop that iterates over start_list and .append()s each number squared (x ** 2) to square_list.
Then sort square_list!

תדוה מראש!
 

BravoMan

Active member
החשיבה ב-Python שונה מחשיבה ב-C

לולאת for ב-Python היא לולאת איטרציה: אין לה תנאי.
היא מקבלת סדרה של ערכים ועוברת עליהם אחד אחד. כשהסדרה נגמרת, הלולאה נגמרת.
&nbsp
בדוגמה שלך, הלולאה תעבור על כל ערך וערך שיש בתוך start_list, וכשיגמרו לה ערכים היא תעצור.
&nbsp
שני דברים לשים לב אליהם:
1. start_list הוא "רשימה" לא מערך!
חלק מהסינטקס שלה נראה דומה למערכים ב-C, אבל בפועל היא דבר שונה מאוד.
חשוב לא להתבלבל בין השניים, זה אחד הדברים ששגוי בקוד שצירפת.
&nbsp
2. בלולאת for של Python יכולים להיות מקורות שונים לערכים (החלק שאחרי in).
זו יכולה להיות רשימה, או מילון, אבל זו יכולה להיות גם פונקציה, או קובץ.
כל דבר שיכול לספק סדרה של ערכים או לתת תשובה "אין יותר ערכים".
&nbsp
באשר לקוד שלך, הטעות העיקרית בו היא שאתה עושה הצבות.
Python היא שפה "מכוונת עצמים" - Object Oriented.
List זו מחלקה - מבנה שמאגד נתונים ופונקציות שעובדות עליהם.
&nbsp
square_list הוא אובייקט מטיפוס List.
כשאתה קורא למתודה append על האובייקט הזה, הוא משתנה "מבפנים".
&nbsp
הפונקציה append תמיד מחזירה None (בערך מקבילה ל-void ב-C, אבל לא בדיוק), כך שלמעשה, אם תנסה להציב תוצאה שלה במקום כלשהו, תדרוס משהו.
&nbsp
אותו דבר נכון לגבי sort. היא פועלת על האובייקט עצמו, ולא מחזירה שום דבר.
 
למעלה