שאלת קרמבו 5-שיעור 5

היי,
אולי מישהו יודע מדוע לא עובד במחברת חמש שאלת הקרמבו? :confused:

איך שרשמתי:

krembo=input(“w”)
krembo=input(“h”)
krembo=input(“i”)
w=int(w)
h=int(h)
i=int(i)
krembo=(whi)
krembo=str(krembo)
print(“the number is” + krembo)

NameError Traceback (most recent call last)
in
2 krembo=input(“h”)
3 krembo=input(“i”)
----> 4 w=int(w)
5 h=int(h)
6 i=int(i)

NameError: name ‘w’ is not defined

ככה רשמתי:
krembo=(w h i)
עם כפול בינהם (לא מראה פה)

@yamitlevhar
שימי לב שבשלושת השורות הראשונות את מגדירה משתנה בשם קרמבו ואז דורסת אותו פעמיים, וההפרדה שלך לגבי רוחב/גובה/אורך בעצם נעשית למשתמש באינפוט ולא בתוך הקוד כמו שכנראה התכוונת.
בשורות לאחר מכן שבהן את מנסה להמיר את w,h,i למספרים,
לקוד שלך אין מושג מי הם בכלל, כי רק הצגת אותם למשתמש כחלק מבקשת הקלט והם לא באמת הוגדרו כמשתנים.

2 לייקים

הבנתי! לא שמתי לב… ממש תודה!!!

לייק 1

היי אלמוג
אפשר הסבר למה אני מקבל שגיאה? הרי אם הכנסתי ערך של input ולאחר מכן ביצעתי casting אני לא אמור לקבל שגיאה לא?

@josefh.biz
היי ג’וזף,
שים לב לסוג (טייפ) המשתנה שאתה רוצה שיהיה לך (סוג הקאסטינג שאתה מבצע) לעומת הסוג של המשתנה שבעצם מתקבל באינפוט בפועל. יש כאן קונפליקט מסוים שבגללו אתה מקבל שגיאה.
במחברת 3 נמצא כל המידע שאתה צריך לגבי סוגי טיפוסים אם תצטרך.
בהצלחה! :slight_smile:

2 לייקים

בשאלה 5 הגדרתי את המשתנים אורך גובה ורוחב כ float כי האורך יכול להיות גם 1.5 כמו בדוגמא למשל, לכן יכולה להתקבל לי תשובה של מספר קרמבואים עשרונים מה שלא הגיוני, האם יש פקודה ( אולי נלמד אותה גם בהמשך) שמעגלת את המספר העשרוני למספר השלם הנמוך שלו ואם כן האם נוכל להשתמש בה כדי לקבל תשובה נכונה יותר?

לייק 1

@ofiravraham
למדנו איך להפריד במספר עשרוני בין החלק השלם לשבר, מאתגרת אותך להגיב/לשלוח לי הודעה איך לעשות זאת.
לחלוטין אפשר להשתמש בזה, אבל כרגע התרגילים לא מתעסקים בקלטים מגוונים, ולכן עוד אין צורך להתגונן מזה.
אבל יופי של מחשבה :slight_smile:

לייק 1

אפשר דוגמא לפתרון? שאבין את הטעות שלי.

אני לא רוצה לגלות לך את הפתרון, אתה מאוד קרוב אליו.
תנסה לענות על השאלות הבאות:

  1. מה סוג המשתנה שהכנסת (אם אתה לא יודע אתה יכול להריץ עליו פקודת טייפ ולגלות)
  2. מה סוג המשתנה שאליו אתה עושה המרה (זו הפקודה שאתה מפעיל על המשתנים שלך)
  3. מה ההבדל בין שני הסוגים הללו? האם ניתן להמיר מהאחד לשני וחזרה? למה?
לייק 1

המלצה חמה לחזור במחברת על כל נושא המשתנים. הלוגיקה בגדול נכונה, הכתיבה לא חוקית.
(אסור לכתוב כאן פתרונות) @yamitlevhar

לייק 1

אני לא מצליח להבין את זה :frowning:

מה החלק שלא מובן? תפרט יותר בבקשה

לייק 1

אני לא מבין למה זה נכשל לי בשורה השנייה. הרי בשורה הראשונה הבהרתי לו שאני רוצה input . בשורה השנייה רשמתי שאני רוצה int . הסתכלתי בהסבר והבנתי שככה צריךלבצע. אז למה הוא נכשל? הרי אני צריך להחזיר אותו מ int למה?

מה שראית בדוגמה במחברת נכון: יש לך מספר שלם שקיבלת מהמשתמש, ששמור בפורמט של מחרוזת, ואתה ממיר אותו למספר שלם כדי שתוכל לבצע עליו פעולות חשבון, בעזרת הפקודה ()int.
עם זאת, זה לא בדיוק המקרה שיש לך, ויש התאמה מסוימת שאתה נדרש לעשות. האם אתה יודע להצביע על ההבדל בין המקרים?
מקווה שהתמונה הזו מתוך מחברת 5 תעזור:

3 לייקים

הבנתי.
טעות שלי… מאחר המספר הראשון הוא 2.5 וזה לא int אלא float . :slight_smile:
הבעיה עכשיו היא ככה:

לייק 1

יופי!! :slight_smile:
השגיאה עכשיו אומרת ככה (ואני רק מתרגמת): השם ‘קרמבו’ לא הוגדר.
בעצם הקוד שלך לא יודע למה אתה מתכוון כשאתה מבקש ממנו להדפיס ‘קרמבו’.

2 לייקים

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

לייק 1

הסתכלתי.
אצלי המקרה הוא float ולא int.
בעע