syntax error and explaining - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

syntax error and explaining


Yulia Kobzar

Recommended Posts

שלום,

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

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

  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++

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

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

קישור לתוכן
שתף באתרים אחרים

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

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")

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...