שאלה לגבי תה אמריקה 2

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

f = input (“Enter the Fahrenheit number you wish to convert”)
f = int(f)
a = float(5/9)
b = int(32)
message = (a*(b-f))
message = str(message)
print = (“The answer is:” + message + “Celsius”)

לייק 1

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

למרבה הצער זה נובע משגיאה, שגם עלולה להשפיע על שאר המחברת.
בשורה האחרונה, במקום לכתוב print(“The answer is:”…), אתה מגדיר את print כמשתנה (ע"י אופרטור ההשמה =), דבר שלמעשה ימנע ממך בהמשך להדפיס, כיוון שמעתה print כבר לא יוגדר כפקודת הדפסה אלא כמחרוזת. מובן שזה גם מונע ממך להדפיס עכשיו, כיוון שלמעשה אינך מדפיס בשום מקום.

בנוסף אולי אין זה ממקומי, אך אציין בכ"ז: 5/9 כבר מחזיר float ולכן אין צורך בהמרה מפורשת בעת השמה ל-a, ובאופן דומה 32 הוא כבר int ולכן גם בהשמה ל-b אין צורך בהמרה מפורשת. סתם שיהיה יפה יותר :slight_smile:

4 לייקים

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

לייק 1

שאלה אחרת מהמקורית:
אם לקחתי את התגובה של מעלות הפרנהייטשניתנה לי על ידי המשתמש והמרתי אותה לint כדי לפתור את זה ואז החזרתי לstr בשביל הprint, מה קורה אם נגיד מכניסים בinput מספר שהוא עם נקודה?

אז פייתון תחזיר שגיאה. אני חושבת שעדיף להמיר ל-float במקום בדיוק מאותה סיבה.
float יתמוך לך גם במספרים שלמים וגם עשרוניים.

לייק 1

עד כמה שאני ניסיתי, כשאתה ממיר מfloat לint, פייתון זונחת את מה שאחרי הנקודה ומחזירה לך את השלם.
אבל שווה לבדוק את זה בעצמך :slight_smile:

לייק 1

הבעיה היא שזה לא מדויק. ברגע שממרים מfloat לint הוא תמיד מעגל למטה.
עדיף פשוט לשמור את המשתנה כfloat, או להמיר לstring אם צריך להדפיס אותו כחלק ממחרוזת שלמה.

לייק 1

מסכיפ שעדיף לשמור כfloat ולהמיר ממנו לstr ישירות בלי המעבר בint.
כ-ככל הדרך ה"נכונה" לשמור משתנה היא המאפיין שלו -
האם הוא קיים ביחידות שלמות? int
לא? float
מעלות לא באות ביחידות שלמות ועל כן - float

2 לייקים