7 בום בפייתון

king iverson

New member
7 בום בפייתון

היי אני לוקח קורס במבוא למדעי המחשב ושובר את הראש כבר שעה למה זה לא מצליח:

 

BravoMan

Active member
אני מקווה שלא ככה נראות ההזחות אצלך באמת

אחרת זה בחיים לא יעבוד.
&nbsp
שים לב ש-Python קובע בלוקים של קוד לפי הזחות.
ה-elif וה-else צריכים להיות מיושרים עם if וה-print הראשון צריך להיות יותר פנימה.
&nbsp
זאת בנוסף למה ש-bismark1 כתב לך.
 

king iverson

New member
תודה לשלושתכם, אבל עדין לא עובד

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

BravoMan

Active member
פרסם את הקוד המתוקן

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

BravoMan

Active member
הכל תקין, התוכנה עושה בדיוק את מה שביקשת


האם תוכל להסביר במילים מה התכוונת שהקוד יעשה?
&nbsp
כי הנה מה שהוא עושה באמת:
(נדלג ישר לסעיף ה-else הראשי):
&nbsp
התחל לולאה מ-1 עד n
האם n מתחלק ב-7 ללא שארית?
אם כן, הדפס "boom" וחזור לתחילת הלולאה.
אחרת, האם מחרוזת "7" נמצאת בתוך n?
התשובה כאן היא "לעולם לא", כ-n הוא מספר ולא מכי למחרוזות (זה Python לא Javascript יש הבדל בין 7 ל-"7").
אם תגיע לפה תקבל הודעת שגיאה.
ולבסוף אם שום תנאי לא התקיים, תדפיס 0.
&nbsp
בשביל מה הלולאה?
בשביל מה ה-elif?
&nbsp
אם תתן קצת הסברים מה אתה רוצה לעשות, אפשר היה לכוון אותך איך עושים זאת ב-Python/
 

king iverson

New member
כנראה אני לא בכיוון - הסבר

המטרה שלי היא שהפלט יכתוב בכל פעם את המספר הבא, ורק בכפולות של 7 או בספרות שמכילות 7 יכתוב "בום".
כלומר:
1
2
3
4
5
6
boom
8
 

Javali

New member
הנה השלב הראשון (והשני)

תסתכל היטב על השורה השישית בפונקציה. מה תפקידו של n? האם n מתחלק ב-7? האם זה מסביר למה אתה מקבל תמיד boom? כתבת שכשאתה מריץ עם מספר רנדומלי, נגיד 16, אתה מקבל הכל boom. האם ניסית להריץ עם 16 או שניסית רק עם 14?
 

BravoMan

Active member
אז אני אנסה לכוון אותך קצת

שים לב שיש לך רק שתי אפשרויות, לא שלוש:
או שאתה מדפיס boom או שאתה מדפיס מספר.
&nbsp
זה אומר שהתנאי שלך צריך לשקף את כמות האפשרויות, כלומר, אין מקום ל-elif. או בום או מספר.
 

liron50

New member
לא מכיר את השפה, אבל...

הבדיקה
if n%7==0
נראית מוזרה..
&nbsp
לא אמור להיות- num במקום n?
 

S h a r k 1 8

New member
ה elseif וה else האחרונים

צריכים להיות באותה אינדנטציה כמו ה if שמגיע אחרי ה for.
 

Javali

New member
אתה גם רוצה ללכת במקומו לשרותים?

כי את שיעורי הבית שלו כבר עשית...
 
למעלה