שיעור 7 - שאלת קיפקיפ הצב

קודם כל תודה רבה על הקורס! מדהים הפרויקט הזה והנכונות של כולם לשבת וללמד :mechanical_arm: :mechanical_leg:

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

בלוק ציטוט
your_order = input (“what tastes of ice cream do you want?”)
is_it_not_only_superstars = your_order == “superstars”
is_it_kip = “superstars” in your_order and not is_it_not_only_superstars
print (is_it_kip)

ואולי הכוונה בשאלה ש creme-brulee, pineapple אלו גם טעמים מועדפים על קיפ?
ומה אם מישהו מזמין את אותם הטעמים, הוא בהכרח אותו הצב?

שים לב שאתה יכול להשתמש ב"האם יש פסיק?"

3 לייקים

אני עשיתי ככה:
(" :ice_cream = input("Enter the tastes you want
(print(“superstars” in ice_cream and ‘,’ in ice_cream

הכל נמצא בשורה השנייה, היא בודקת האם יש superstars בתוך ההזמנה, והאם יש ‘,’ שאומר שיש עוד טעמים בהזמנה.

לייק 1

היי,
שים לב בדוגמה של התרגיל גם שיש רק טעם אחד ונגיד הוא superstars יש פסיק לפני … פה אני תוהה אולי צריך לבדוק שיש 2 פסיקים ?

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

זה הפתרון שאני נתתי, מקווה שעוזר
**flav = flavor

how_many_flav = input("How many flav do you want? ")
how_many_flav = int(how_many_flav)
flav = input(“please write your flav: “+ “(use”+”’,’”+"between the flav) ")
kipik = how_many_flav > 1 and “superstars” in flav
print (kipik)

לייק 1

גם אני עשיתי בדיוק ככה :slight_smile:
נראלי הכי קצר וקולע

לייק 1

לי דווקא הרעיון שעלה לראש הוא למצוא דרך שהקוד יזהה שבחרת את supersars ובנוסף לכך עוד אחד משני הטעמים (או שניהם).

ice_1 = ‘superstars’
ice_2 = ‘choco’
ice_3 = ‘vanila’
choice = input(“please choose, flavours available: superstars, choco, vanila”)
kipik = (ice_2 or ice_3 and ice_1) in choice
print("your choice: " + choice)
print(kipik)

הבעיה היא שהקוד רושם לי false אם אני מזין superstars ו- vanila.
superstars + choco = true
superstars + choco + vanila = true

אשמח אם מישהו יכול לעזור לי להבין את הטעות שלי

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

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

אופציה עם: “וגם”.
2. שהקלט יכיל את המחרוזת: “Superstars”, וגם: שהקלט יכיל את המחרוזת: “,”.

אופציה עם: “או”.
3. שהקלט יכיל את המחרוזת: “Superstars,”, או שהקלט יכיל את המחרוזת: “, Superstars”.

2 לייקים

שני דברים:

  1. לאופרטורים יש היררכיה של: “מי בא קודם”, (כמו סדר פעולות חשבון); האופרטור: and מחושב לפני האופרטור: or (כמו שפעולת כפל מחושבת לפני פעולת חיבור!).

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

**אם לא בא לך להשתמש בסוגריים (למשל, סתם על פרנציפ, בשביל המשחק), אז אתה יכול לכתוב:
ice_1 and ice_2 or ice_1 and ice_ 3


  1. התכנית שלך בודקת רק לגבי הטעמים: superstars, vanilla ו-choco.

*אבל מה יקרה מישהו ירצה להזמין גלידה בטעם קשת־בענן, או חלפיניו?

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

צודק.
פספסתי את הקטע שקיפיק מזמין מינימום 2 כדורים. תוקן.

2 לייקים

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

2 לייקים

זה בדיוק מה שחשבתי בהתחלה על הפתרון שהציעו פה שיזהה את הsuperstars ואת ה ״,״ ובגלל זה הרעיון שילה לי לראש הוא לכתוב את האפשרויות כשהקוד שואל אותך מה אתה רוצה להזמין.

אבל בינתיים כבר הבננתי את הטעות שלי ואת הפתרון שלך.
דרך אגב, ניסיתי גם עם סוגריים על ה (ice_1 + ice_2) וזה הראה לי אותה תוצאה כשסופרסטארס ווניל יצאו false.

זה כי אלו לא ice_1 ו-ice_2 שצריכים להיות בסוגריים:
אתה רוצה: ice_1 וגם (ice_2 או ice_3).

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

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

אם מישהו מזמין רק superstars, אז זה לא קיפיק.
(אבל הפתרון שלך יגיד שזה כן הוא).

@Yam
ים, רק רוצה לוודא - בשאלה הזו צריך להחזיר ערך בוליאני?

כן, בשאלה הזו צריך להדפיס ערך בוליאני.

אתה יכול לשלוח בבקשה תמונה של הקוד רץ?

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

לייק 1