מחברת 5 - תרגיל קרמבו

היי,

יש לי בעייה עם הגובה (2.5). בגלל שאני ממיר את זה ל- int ולא מדובר במספר שלם - זה נותן שגיאה.
שימו לב שאם אני ממיר את הגובה ל- float אני מקבל את התוצאה הנכונה (30) אבל זה ייצא עם מספר עשרוני (30.00).

מה אני עושה אם הקלט הוא מספר עשרוני ואני ממיר ל- int? תמיד זה יהיה שגיאה?

תודות,

איתמר.

מאחר ומדובר על ארגז קרמבו יצאתי מנקודה שהמידות שלו יכולות להיות מספרים עשרוניים.
כך שהתשובה העשרונית ובכלל מתן אפשרות להזנה של מספר עשרוניים והמרה של הגובה/רוחב/אורך לfloat היא נכונה (או שלא? :face_with_raised_eyebrow:)
*אם בכל זאת אתה רוצה להציג מספר שלם גם אם התוצאה תצא עשרונית תוסיף int אחרי הprint
print(int(number_of_krembos))

מצטרף לשאלה, איך ניתן להמיר לfloat או ל int, בהתאם לערך שמוזן בinsert?

אני יכולה לחשוב על כמה דרכים לעשות את זה אבל העיקריות :
number = input("enter a number")
if number.endswith(".0"):
number = int(number)
else:
number = float(number)
לא היה ממש נוח לרשום את הקוד מקווה שתבינו בכל זאת כי ההזחות יצאו מוזרות
בכל אופן, אפשר לבדוק אם המחרוזת מסתיימת בנקודה אפס ואם כן זה מספר שלם ואם לא זה float.

עוד דרך זה isdigit() שזאת פעולה שבודקת אם מחרוזת היא מחרוזת של מספר שלם

אני חושבת שהשיטה השנייה עדיפה כי הראשונה לא תעבוד אם המשתמש מכניס פשוט מספר שלם כמו לדוגמה 7 אלא יותר אם התוכנה מחשבת כ float ואז מחזירה תוצאות בטיפוס float גם אם הם מייצגים int

כן תיארתי לעצמי שאפשר עם if אבל הכוונה שלי הייתה האם זה משהו שהיינו צריכים לפתור במסגרת החומרים שנלמדו במחברות עד כה…

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

:boom: :boom:
תודה רבה @yam סגרת לי את הפינה :mechanical_arm:

לייק 1

תודה @Yam, @dor.braverman, @tolioly, @keren084