קיפקיפ הצב המבולבל

שלום,

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

ממשיך את הדיון מ קיפקיפ הצב הרעב:

את צריכה להשתמש בIN, כי יש טעם מסוים שאמור להיות בתוך ההעדפות של קיפיק, אחרת מי שהזמין את הגלידה הוא לא קיפיק.
כלומר בקוד חייב להיות כתוב בצורה כלשהי ש"superstars" נמצא, כלומר IN, בתשובה שניתנה לך לשאלה “אילו טעמים תרצה?”

היי,

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

  1. מה המשתמש אמור להזין?
  2. מה העיבוד שאמור להתבצע? (מה אנחנו אמורים לבדוק, במקרה הזה)
  3. מה הפלט שאמור להיות מוחזר?

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

לחצי כאן לספוילר

אנחנו צריכים לשאול משהו לגבי ההזמנה של קיפיק, ולכן מחברת 6 (וכנראה מחברת 7) יהיו רלוונטיים.
בהינתן שעכשיו אנחנו יודעים שזה בהכרח ביטוי בוליאני, נסי לכתוב ביטוי שכזה שיחזיר True עבור כל המקרים שחשבת שהמחשב אמור לפלוט עבורם True, ו־False עבור כל המקרים שחשבת שהמחשב אמור לפלוט עבורם False.

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

  1. המשתמש אמור להזין טעמים
  2. אנחנו צריכים לבדוק שיש לפחות שני טעמים שמוזמנים כאשר אחד מהם חייב להיות סופרסטארז. כלומר כדי לקבל ביטוי אמת צריך שהלקוח יזין (“סופרסטארז” וגם “סופרסטארז” - כי אפשרי שיהיו 2 כדורים באותו הטעם) או (“סופרסטארז” וגם “אננס”) או (“סופרסטארז” וגם “קרם-ברולה”) או (“סופרסטארז” וגם “סרפד”).
  3. הפלט שאמור להתקבל הוא או: “ברוך שובך קיפיק” (במקרה של “True”) או “שלום ג’ון דו” (במקרה של “False”).

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

תודה על העזרה!

הקלט והפלט שלך הם אחלה. שלב 2 הוא זה שדורש חידוד כרגע.

  1. שימי לב שקיפיק יכול לבחור כל טעם בעולם, ולא רק טעמים מהדוגמאות.
  2. שימי לב שבקוד שלך, חלק מהדברים שרצית לציין כמחרוזת הם לא מחרוזת. (איך מציינים מבחינה טכנית מחרוזות? חזרי על המחברות הרלוונטיות בשבוע 1).
  3. הניסוח של התנאי כרגע מעט בעייתי.
    3.1 את עושה השמה מחדש לתוך המשתנה order, שבו מופיעה ההזמנה של קיפיק. את תכולת המשתנה הזה את צריכה לבדוק כדי להכריע האם זה קיפיק. עדיף להמנע מלדרוס אותו. (את המשתנה. לא הנחתי שאת מנסה לדרוס את קיפיק).
    3.2 כתבת את זה בעצמך: צריך לבדוק שיש לפחות שני טעמים שמוזמנים, וגם אחד מהם חייב להיות סופרסטארז.
    3.3 נסי לחשוב על איך אפשר לזהות שיש יותר מכדור אחד. רמז: זה כתוב בניסוח השאלה.
    3.4 נסי לחשוב איך אפשר לזהות שאחד הכדורים הוא superstars.

בהצלחה!

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

  2. מחרוזת (STR) מציינים עם גרש או גרשיים. אני לא חושבת שהבנתי עד הסוף את הפונקציה של מחרוזת. ברור לי איך מסמנים אותה, לא ברור לי עד הסוף מתי משתמשים בה. בדוגמה עם המספרים כשיש מחרוזת של “1” ו- “2” אני מבינה שזה חיבור של התוכן ולא פעולת החשבון.

  3. 1.3. בשלב זה ייתכן ואני מנסה לדרוס את קיפיק.
    2+3.3. שטעם “superstars” מוזן וגם “,” (פסיק). אני רוצה לכתוב קוד שאם הפלט שחוזר מכיל
    “superstars” וגם “,” תצא הודעה “ברוך שובך קיפיק” ובמידה ושני התנאים לא מתקיימים תצא
    הודעה “שלום ג’ון דו”
    4.3. אפשר לזהות שאחד הכדורים הוא superstars אם תופיע המילה superstars

מצרפת את מה ששיניתי אבל לא ברור לי המעבר משורה 2 לשורת הפרינט.
כלומר שורה ראשונה = קלט.
שורה שנייה מגדירה מה אני צריכה שיהיה בפלט על מנת לקבוע שזה קיפיק:
is_it_kipik = “superstars” and “,” in order
או:
is_it_kipik = “superstars” + “,” 0

ומפה מסתבכת.

המשכתי לשבוע 2, אולי משהו שם ישפוך לי אור על המחברת הקודמת. אני לא מבינה חלק מהשורות “בדוגמאות הנוספת” על המקדש. למה חלק מהן שם, לדוגמה:

user_fullname = input('Please enter your full name: ') - אין בעיה עם זה - קלט.
is_temple_open = False - ביטוי בוליאני לתנאי שיגיע בשורה 3

if ‘Cohen’ in user_fullname: - תנאי
print(‘You may enter the temple!’) פעולה בעקבות התנאי.
is_temple_open = True לא מבינה למה מופיע לי שוב ביטוי בולאני כאשר בשורה שנייה מופיע לי ביטוי בוליאני שונה

print(’’)
print('Thank you, ’ + user_fullname + ‘.’)
print('Is the temple open?: ’ + str(is_temple_open))
פעולה בעקבות התנאי שלא מתקיים.

לא ברור לי החיבור בין כל השורות האלו וסדר הופעתן (למה יש ביטוי בוליאני בשורה 2 ועוד ביטוי בוליאני בשורה 3.)

יתרה מזאת, נסיתי לפתור את שאלת קיפיק בצורה של תנאי - אבל גם זה לא צלח…

האם אפשרי להמשיך עם המחברות (האם החומר מתבסס על קודמו)? כי השאלות רק הולכות ומצטברות ולא רוצה לא להגיש תרגילים.

החומר מתבסס באופן כבד ממש על החומר הקודם, ולכן אני ממש לא ממליץ להתקדם בלי שהרגשת שהבנת תנאים לאשורם.
בתא 47 שצילמת את מתקרבת מאוד(!) לתשובה, יש לך טעות בסיסית שאפשר למצוא בסרטון פה, שאם עדיין לא ראית – ממליץ עליו בטירוף.

דרך אגב @Yam , אני מקווה שבקיפ קיפ הצב לא רציתם שנעשה קוד ממש מושלם, כי בכלים שיש לנו (בנתיים) הדרך שפתרתי את קיפקיפ היה שאם המשתמש יקליד למשל superstars, עם כמה רווחים אחרי הפסיק, זה גם יצא True למרות שהוא לא הקליד עוד טעם, בהתחלה חשבתי המון על דרך לפתור את זה בצורה אחרת, אבל לא מצאתי (אני בטוח שבהמשך נלמד שיטה שתעזור לגרום לזה להיות False) עוד דוגמא - למשל אם המשתמש יקליד abcdsuperstars, pineapple זה גם יעבור ומישהו אמר לי שאפשר לתקן את זה בעזרת split, אבל כרגע אנחנו לא עוסקים בזה, וככה הבנתי שאתם עובדים, שאתם לא דורשים שנשתמש בדברים שלא למדנו, וזה דורש הרבה השקעה בשביל מישהו שיודע את פייתון בעל פה, לדרוש ממתחילים להשתמש רק עם מה שהם למדו, מעריך מאד את העבודה הקשה הזאת! :joy:

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

לייק 1
  1. תודה, תיקנתי לפי הסרטון (אבל אם אני כנה אני לא יכולה להגיד שאני מבינה את ההגיון מאחורי זה. למה אני לא יכולה כשזה שני משתנים לחבר פעם אחת:
    “superstars” and “,” in order
    למה המערכת צריכה הפרדה:
    “superstars” in order and “,” in order

  2. וגם למה אני לא יכולה לכתוב את זה ככה עם הסימן פלוס במקום in:
    “superstars” + “,”
    זה נגיד נראה לי משהו שצריך להיות לי מאוד ברור עד עכשיו אבל הוא לא לצערי.

  3. אם לסכם מה התכלית של מחרוזת זה להציג תוכן כלשהו?

  4. יש צפי לסרטון מחברת 1 שבוע 2? בינתיים אכתוב את השאלה שכתבתי למעלה לגבי “דוגמאות קוד נוספות” בפורום המתאים של שבוע 2.

  5. פידבק מחברת 1: הייתי ממש שמחה לתרגולים נוספים בנושאים של מחברת 1. אני חושבת שבעיקר לאנשים שמגיעים עם 0 רקע (כפי שהוגדר ב"למי מיועד הקורס") זה מאוד עוזר. תרגיל אחד זה רק טעימה, לא בטוחה שזה מספיק כדי להפנים עד הסוף, אבל זו רק דעתי האישית. אני בכל מקרה הייתי שמחה אם היה אפשר לתרגל עוד.

תודה רבה על הסבלנות!

  1. מכיוון שלפייתון, כמו בתרגיל אריתמטיקה מסורתי, יש סדר פעולות חשבון, והפעולה and מוגדרת היטב עבור שתי מחרוזות. כשאת כותבת x and y פייתון חייב להחזיר תשובה (כמו שכשאת כותבת x * y + z, חייבים קודם למצוא את התשובה עבור x * y), ורק אז הוא ניגש ל־in order. אבל אז זה כבר מאוחר מדי.
  2. בנוגע לפלוס:
    2.1 סימן הפלוס מטרתו שרשור. הוא בסך הכל מוערך את superstars ואת התו פסיק ביחד, כך שיצאו superstars,. בכל מקום שבו כתוב בקוד "superstars" + ",", את ממש יכולה להחליף פיזית את הקוד הזה ב־"superstars,". סימן ה־in, לעומתו, בודק האם צד שמאל נמצא בתוך צד ימין ובהכרח מחזיר True או False.
    2.2 זה נכון שכדאי שזה ישב טוב לפני שעוברים הלאה. אני ממליץ לקרוא שוב את המחברת שמדברת על שרשור, ואולי לתת וישט נוסף על שאר המחברות.
  3. התכלית של מחרוזת היא לייצג רצף של תווים, ולתת לנו כמתכנתים לבצע עליהם פעולות בצורה נוחה יחסית. זה נכון שהרבה מאוד מחרוזות בסופו של דבר מגיעות לprint ומודפסות למשתמש, אבל ממש אין חובה שכזו.
  4. כנראה מחר, אבל לא מתחייב.