עבור לתוכן

syntax error and explaining

Featured Replies

פורסם

שלום,

התחלתי ללמוד פייתון לא מזמן ואני באה ללא שום רקע בתכנות אז אולי השאלות יראו לכם קצת פשוטות ובכל זאת אשמח עם תענו לי על זה.

אני מנסה לכתוב  תוכנית שדורשת:

  1. מספר מושלם הוא מספר השווה לסכום מחלקיו (סכום אשר אינו כולל את המספר עצמו).

למשל 6 ו – 28 הם מספרים מושלמים, כי   (6=1+2+3) ו –  (28=1+2+4+7+14)

כתוב פונקציה שקולטת מספרי n ומדפיסה אם המספר מושלם או לא.

 

זה מה שכתבתי:import math
def f4():
    num=int(input("please enter a number: ")
    for i in range(num,1,-1)
        if(num%i==0)
            sum=sum+i-אני מקבלת שגיאה
        if(sum==num)
            print("perfect")
        else:
            print("not perfect")
            

להלן השאלות:

1.למה אני מקבלת את השגיאה?

2. האם  התוכנית בכלל נכונה?

3.יש אופציה לקבל הסבר על איך זה עובד בדיוק מבחינת הלולאה והכל יש לי קצת קושי בהבנה הזאת וזה מביא אותי לבעיה שאני לא מצליחה בכלל לגשת לתרגילים.

כפי שציינתי מקודם אין לי שום רקע בתכנות אז אם השאלות נראות לכם מובנות מאליו לי הם לא.....

פורסם

 

ציטוט של Yulia Kobzar

 

1.למה אני מקבלת את השגיאה?

2. האם  התוכנית בכלל נכונה?

3.יש אופציה לקבל הסבר על איך זה עובד בדיוק מבחינת הלולאה והכל יש לי קצת קושי בהבנה הזאת וזה מביא אותי לבעיה שאני לא מצליחה בכלל לגשת לתרגילים.

כפי שציינתי מקודם אין לי שום רקע בתכנות אז אם השאלות נראות לכם מובנות מאליו לי הם לא....

 

הקוד שכתבת נכון, מה שזה עושה זה למנות את כל המספרים מ-0 עד num לתוך משתנה sum, אם הם מתחלקים ללא שארית (זה הif שבתוך הלולאה). אחרי ריצת הלולאה בודקים אם סכום המחלקים שווה למספר, ואם כן אז זה מספר מושלם.

אני לא ממש מכיר פייתון (ואגב לדעתי עדיף לך להתחיל בשפת c# או גאווה), אבל זה נראה כמו שגיאת תחביר כלשהיא, כנראה במבנה של הלולאה, ותכתבי לולאות בתוך בלוק, וגם את הif.

פורסם

ממה שאני רואה, יש סיכוי גדול שלא איפסת את המשתנה sum. את לא יכולה להכניס משהו למשתנה בלי לאפס אותו עם משהו. כלומר, את צריכה לכתוב את זה לפני שאת נכנסת ללולאה:

var sum = 0

זה בג'אווה-סקריפט, אבל מאוד דומה לפייתון.

 

 

פורסם
  • מחבר
ציטוט של RnG

אני ניסיתיעם הSUM=0 אבל אז זה גם נותן לי שגיאה

 

 

 

ציטוט של donMON

 

 

הקוד שכתבת נכון, מה שזה עושה זה למנות את כל המספרים מ-0 עד num לתוך משתנה sum, אם הם מתחלקים ללא שארית (זה הif שבתוך הלולאה). אחרי ריצת הלולאה בודקים אם סכום המחלקים שווה למספר, ואם כן אז זה מספר מושלם.

אני לא ממש מכיר פייתון (ואגב לדעתי עדיף לך להתחיל בשפת c# או גאווה), אבל זה נראה כמו שגיאת תחביר כלשהיא, כנראה במבנה של הלולאה, ותכתבי לולאות בתוך בלוק, וגם את הif.

זה קורס בתואר שהחליטו שמתחילים ממנו וסמסטר הבא אני מתחילה JAVA אבל אני מאוד פוחדת להיכשל בקורס הזה כי קצת מתקשה בהבנה

תודה על ההסבר!

פורסם
ציטוט של Yulia Kobzar

 

זה קורס בתואר שהחליטו שמתחילים ממנו וסמסטר הבא אני מתחילה JAVA אבל אני מאוד פוחדת להיכשל בקורס הזה כי קצת מתקשה בהבנה

תודה על ההסבר!

 

עכשיו אני שם לב שבכותרת גם כתוב syntax error. 

אני לא מכיר פייתון אז אני לא יודע בדיוק. 

הלולאה שלך נכונה ? זה צריך להיות לולאה שרצה מI=0 עד num , תנאי I<Num , מקדם לולאה I++

חוץ מזה שמת את הלולאה בבלוק כמו שאמרתי? 

כולם מתקשים בהתחלה.. בכל מקרה שיהיה בהצלחה :) 

נערך על-ידי donMON

פורסם
  • מחבר

הלולאה רצה מI=0 יעד NUM לגבי התנאי I<NUM אין אותו לא הבנתי גם בשביל מה צריך אותו כלומר מה הוא יתן לי? ומקדם הלולאה הוא מתחיל ממספר חיובי 

פורסם
  • מחבר

עוד שאלה חברים הצלחתי לתקן את השגיאת כתיב אבל כשאני מריצה את התכנית הבאה:

import math
def f4():
    sum=0
    num=int(input("please enter a number: "))
    for i in range(num,1,-1):
        if num%i==0:
            sum=sum+i
        if(sum==num):
            print("perfect")
        else:
            print("not perfect")
            

זה מה שאני מקבלת:

 f4()
please enter a number: 6
perfect
perfect
perfect
not perfect
not perfect

 

למה אני אמורה שידפיס לי או מושלם או לא אני לא מבינה למה כלהפירוט ואיך הוא מופיע?

פורסם

יהיה הרבה יותר קל לקרוא את זה בפורום אם תכניסי את הקוד לתגית CODE

בכל מקרה נדמה לי שהבעיה היא שאת מריצה את הבדיקה וההדפסה בכל איטרציה של הלולאה, את צריכה להריץ את הבדיקה רק בסוף כשהלולאה הסתיימה. בפייתון פתיחה וסיום בלוק הוא לפי ההזחה (indentation) של הקוד, יש טאב מיותר לפני החלק הזה:

           print("perfect")
        else:
            print("not perfect")

תורידי אותו וזה אמור לעבוד

פורסם
  • מחבר
ציטוט של etal

 

כן עבד הצלחתי תודה !

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים