פיזבאז- מחברת 3 בתוך שבוע 2

בחוברת מספר 3 :
אם אני רושמת את התנאי שמתחלק גם ב3 וגם ב-5 לאחר השורות קוד של התנאים שמתחלק רקב- 3 ללא שארית ורק ב- 5 ללא שארית .הקוד לא קולט את זה.

אבל ואם אני רושמת שורה ראשונה בקוד הפונקציה את התנאי שמתחלת גם ב-3 וגם ב-5 בלי שארית זה קולט.

איך אני מתגברת על עניין הסדר בתוך הפונקציה ?
או שהוא חשוב וקריטי ?

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

לייק 1

שאלה נוספת לגבי התרגיל הזה -
בהנחיות כתוב “אם xxx, הדפיסו …” . האם עלינו ממש להדפיס את הערך המוחזר (להפעיל עליו את print), או שמספיק להחזיר אותו (return) וזה נחשב שהדפסנו?

תודה רבה! :slightly_smiling_face:

למיטב הבנתי הדפיסו = print והחזירו = return, אבל אני חושבת שתשובה מאיש סגל תהיה ודאית יותר

אני לא יודע מה כוונת המשוררים במקרה הזה, אבל פיזבאז היא אכן בעיה נפוצה ובדר"כ הרעיון הוא ואריאציה על המשחק “שבע בום” אם מישהו זוכר, ובמקרה הזה הפונ’ אמורה להדפיס את המספר או פיז/באז/פיזבאז ולא להחזיר אותו.

אשמח גם לקצת הכוונה, אני לא סגור על איך לכתוב את הפעולת חישוב.
האופרטור הוא %?
והאם אפשר להשוות פעולת חישוב למילה int? במטרה להשוות למספר שלם
ככה - if number % 3 == int:
הסתבכתי לגמרי עם התרגיל הזה :upside_down_face:

השוואה ל-int היא לא הדרך לבדוק האם מספר הוא שלם או לא.
בנוסף, האופרטור % מחזיר את שארית החלוקה במספר, למשל אם מחלקים 5 ב-4 זה מחזיר 1. בפרט זה תמיד מחזיר מספר שלם גדול או שווה לאפס.
אם אתה רוצה לבדוק האם תוצאת החילוק היא מספר שלם אתה צריך לבדוק האם התוצאה של חילוק ב-/ היא מספר שלם.

לייק 1

מה אני שם בצד הימני של הביטוי הבוליאני בשביל זה?

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

היי אורפז,

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

תודה!! :pray:

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

רמז לגבי פיזבאז -
שימו לב לif , elif else

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

תחשבי על הסדר של התנאים.

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

לכן נתחיל כך :
אם הוא מתחלק ב3 וב5 -
תעשה כך וכך.
נשים את התנאי הזה ראשון , כי הוא הכי “ספציפי”.

אחר כך נגיד elif - שזה למעשה else if כלומר - רק אם התנאי הראשון לא מתקיים :
אם הוא מתחלק ב3 תעשה כך וכך

אחר כך נגיד elif - שזה למעשה else if כלומר - רק אם התנאים הללו לא מתקיימים :
אם הוא מתחלק ב5 תעשה כך וכך.

else - תעשה כך וכך.

,תבדקי שה input שלך הוא int ,
ב if הראשון כתוב - if reminder == 0 , ב elif הראשון כתוב אותו הדבר, יש פה סתירה לוגית
מה שכתוב בעצם: אם reminder == 0… אלא אם reminder == 0…
דבר נוסף, יש חשיבות לסדר בדיקה שמבצעים.

אוקי אז זה ממש הגיוני וכתבתי את זה כמו שאמרת באמת. עכשיו זה אומר לי משהו אחר שה

Remainder = number % 5 and remainder = number % 3

SyntaxError: can’t assign to operator

מה הכוונה?

נראה לי שמה שהתכוונת זה לקבל תשובה בוליאנית,
לכן צריך להשתמש ב == (השוואה) ולא ב = (השמה)

כמו שאסף אמר מעלי … ושחררי את הרמיינדר הזה , את לא צריכה אותו.
פשוט תבדקי האם השארית שווה 0 או לא - בלי שום reminder בדרך.

אההה אוקי אחלה עכשיו זה עובד! תודה רבה