21 תשובות
שואל השאלה:
לא משנה אזו כיתה?
לא משנה אזו כיתה?
אני גם לומדת אבל זה תלוי במה
שואל השאלה:
כבר הגעת לקטע של מילונים?
כבר הגעת לקטע של מילונים?
כן נראה לי שכן:)
שואל השאלה:
איך אני בוחר פריט מסוים מהמילון בעזרת תנאי של if?
איך אני בוחר פריט מסוים מהמילון בעזרת תנאי של if?
מה השאלה? מה התנאי שאתה רוצה לבדוק? באופן כללי
if (expression):
somevalue = dict[key[
if (expression):
somevalue = dict[key[
אנונימי
שואל השאלה:
התנאי הוא שאם הinput שווה לvaliu אז זה יביא את הערך של הvaliu
התנאי הוא שאם הinput שווה לvaliu אז זה יביא את הערך של הvaliu
שואל השאלה:
אבל איך אני עושה שהvaliiu לא יהיה משהו מסוים אלא יהיה מה שהוא כתב בinput ואם יש את זה במילון זה יכתוב לו את הערך של הvaliu ואם אין את זה זה יכתוב לו שאין את מה שהוא כתב
אבל איך אני עושה שהvaliiu לא יהיה משהו מסוים אלא יהיה מה שהוא כתב בinput ואם יש את זה במילון זה יכתוב לו את הערך של הvaliu ואם אין את זה זה יכתוב לו שאין את מה שהוא כתב
שואל השאלה:
קח את זה לדוגמא
קח את זה לדוגמא
שואל השאלה:
ask = input("enter movie name please:")
movies_list = {"spiderman" : "spiderman link" , "ironman" : "ironman link"}
if ask == movies_list["מה שהוא כתב בask"]:
print("את הערך של מה שהוא כתב")
else:
print("we dont can find your movie")
ask = input("enter movie name please:")
movies_list = {"spiderman" : "spiderman link" , "ironman" : "ironman link"}
if ask == movies_list["מה שהוא כתב בask"]:
print("את הערך של מה שהוא כתב")
else:
print("we dont can find your movie")
שואל השאלה:
תסתכל פה
http://www.up2me.co.il/v.php?file=64976963.png
תסתכל פה
http://www.up2me.co.il/v.php?file=64976963.png
עברתי מילונים, רוצה לשאול בפרטי?
אה כתבת, נראלי צריך לעשות מתודת פינד
שואל השאלה:
מה זה?
מה זה?
find() זה מציאת אובייקט. אגב, לפעמים הבאות אל תשאל אם אתה יכול לשאול, הסיכוי שאנשים יענו הוא קטן יותר. תהיה ישיר ותשאל. ממליץ לקרוא (לא רק לך, לעוד הרבה אנשים פה) https://dontasktoask.com/
אתה פשוט צריך לעשות ככה:
ask זה הinput כמו שעשית, ואז
if ask in movies_list:
- תדפיס את movies_list[ask]
אחרת
תדפיס - "לא ניתן למצוא את הסרט"
ask זה הinput כמו שעשית, ואז
if ask in movies_list:
- תדפיס את movies_list[ask]
אחרת
תדפיס - "לא ניתן למצוא את הסרט"
אני, ולשאלתך, הנה מה שהיית צריך לכתוב:
ask = input("enter movie name please:")
movies_list = {"spiderman" : "spiderman link" , "ironman" : "ironman link"}
if ask in movies_list:
print(movies_list[ask])
else:
print("we dont can find your movie")
הסבר:
אני משתמשת פה במילה השמורה in. היא נועדה בשביל לבדוק האם איבר נמצא בתוך מבנה נתונים שבמקרה זה הוא dict. אם התנאי של ask in movies_list (מפייתון לעברית: תנאי של אם ask נמצא באיטרטור מסוג dict שהוא movies_list) אכן מתקיים, אז מודפס הביטוי movies_list[ask], שהוא הערך של המפתח ask בmovies_list
סקרינשוט בשביל אינדטציה ברורה:
http://www.up2me.co.il/v.php?file=29135544.jpg
דרך אגב, אני יכולה אפילו יותר לקצר את הפתרון:
ask = input("enter movie name please:")
movies_list = {"spiderman" : "spiderman link" , "ironman" : "ironman link"}
print(movies_list[ask]if ask in movies_list else "we dont can find your movie")
אז מה שיניתי פה? לא הרבה, אני רק השתמשתי בif וelse בתור ביטוי מאשר פקודה
זה יהיה מהתחביר הבא תמיד כשאני משתמשת בif else בתור ביטוי:
expression2 if expression1 else expression3
מה זה אומר? אם ביטוי 1 נכון (כלומר מתודת ה__bool__ שלו מחזירה true או מתודת ה__len__ שלו אינה מחזירה 0) אז יוחזר ביטוי 2. אחרת יוחזר ביטוי 3
כאן השתמשתי בביטוי 1 בתור ask in movies_list, ביטוי 2 הוא movies_list[ask], ביטוי 3 הוא "we dont can find your movie"
מובן?
יופי, כי אני הולכת ללמד אותך לקצר את זה אפילו יותר משקיצרתי לפני:
print((lambda ask,movies_list:movies_list[ask]if ask in movies_list else "we dont can find your movie")(input("enter movie name please:"),{"spiderman" : "spiderman link" , "ironman" : "ironman link"}))
אני יודעת שזה נראה מסובך אבל אסביר:
אני קראתי כאן אל פונקציית למדא שבה הגדרתי את הפרמטרים של הביטוי
movies_list[ask]if ask in movies_list else "we dont can find your movie"
אם לא הבנת אז הביטוי הוא בעצם הif else גרסת ביטוי במקום פקודה
ואחר כך אני קוראת אל הפונקציה ומציבה בה את הערכים הבאים:
input("enter movie name please:")
{"spiderman" : "spiderman link" , "ironman" : "ironman link"}))
כלומר אני מציבה את קלט המשתמש ואת המילון
אחר כך אני מדפיסה את תוצאת הפונקציה
יש שאלות?
ask = input("enter movie name please:")
movies_list = {"spiderman" : "spiderman link" , "ironman" : "ironman link"}
if ask in movies_list:
print(movies_list[ask])
else:
print("we dont can find your movie")
הסבר:
אני משתמשת פה במילה השמורה in. היא נועדה בשביל לבדוק האם איבר נמצא בתוך מבנה נתונים שבמקרה זה הוא dict. אם התנאי של ask in movies_list (מפייתון לעברית: תנאי של אם ask נמצא באיטרטור מסוג dict שהוא movies_list) אכן מתקיים, אז מודפס הביטוי movies_list[ask], שהוא הערך של המפתח ask בmovies_list
סקרינשוט בשביל אינדטציה ברורה:
http://www.up2me.co.il/v.php?file=29135544.jpg
דרך אגב, אני יכולה אפילו יותר לקצר את הפתרון:
ask = input("enter movie name please:")
movies_list = {"spiderman" : "spiderman link" , "ironman" : "ironman link"}
print(movies_list[ask]if ask in movies_list else "we dont can find your movie")
אז מה שיניתי פה? לא הרבה, אני רק השתמשתי בif וelse בתור ביטוי מאשר פקודה
זה יהיה מהתחביר הבא תמיד כשאני משתמשת בif else בתור ביטוי:
expression2 if expression1 else expression3
מה זה אומר? אם ביטוי 1 נכון (כלומר מתודת ה__bool__ שלו מחזירה true או מתודת ה__len__ שלו אינה מחזירה 0) אז יוחזר ביטוי 2. אחרת יוחזר ביטוי 3
כאן השתמשתי בביטוי 1 בתור ask in movies_list, ביטוי 2 הוא movies_list[ask], ביטוי 3 הוא "we dont can find your movie"
מובן?
יופי, כי אני הולכת ללמד אותך לקצר את זה אפילו יותר משקיצרתי לפני:
print((lambda ask,movies_list:movies_list[ask]if ask in movies_list else "we dont can find your movie")(input("enter movie name please:"),{"spiderman" : "spiderman link" , "ironman" : "ironman link"}))
אני יודעת שזה נראה מסובך אבל אסביר:
אני קראתי כאן אל פונקציית למדא שבה הגדרתי את הפרמטרים של הביטוי
movies_list[ask]if ask in movies_list else "we dont can find your movie"
אם לא הבנת אז הביטוי הוא בעצם הif else גרסת ביטוי במקום פקודה
ואחר כך אני קוראת אל הפונקציה ומציבה בה את הערכים הבאים:
input("enter movie name please:")
{"spiderman" : "spiderman link" , "ironman" : "ironman link"}))
כלומר אני מציבה את קלט המשתמש ואת המילון
אחר כך אני מדפיסה את תוצאת הפונקציה
יש שאלות?
^^
מה הקשר בדיוק בין איטרטור לin-dict?
בנוסף הביטוי lambda מיותר ביותר פה, בהחלט הופך את הקוד ליותר מסורבל, בהרבה פחות קריא, ובכלל לא יעיל יותר מפתרון אחר.
בנוסף אם המילון של הסרטים יהיה ארוך זה משהו שבכלל לא יהיה נוח לעדכן אותו בביטוי, כן היה אפשר להגדיר אותו מבחוץ אבל עדיין הדוגמה פה פשוט לא מתאימה וזה סתם ייסבך אותו.
מה הקשר בדיוק בין איטרטור לin-dict?
בנוסף הביטוי lambda מיותר ביותר פה, בהחלט הופך את הקוד ליותר מסורבל, בהרבה פחות קריא, ובכלל לא יעיל יותר מפתרון אחר.
בנוסף אם המילון של הסרטים יהיה ארוך זה משהו שבכלל לא יהיה נוח לעדכן אותו בביטוי, כן היה אפשר להגדיר אותו מבחוץ אבל עדיין הדוגמה פה פשוט לא מתאימה וזה סתם ייסבך אותו.
questionable, אבל מה הבעיה? אני יכולה לעשות שאגדיר בשורה נפרדת את המילון אם הוא ארוך, זה לא בעיה
ומה הבעיה שיש יותר מפתרון אחד? זה דווקא נחמד שיש יותר מדרך אחת לפתור
ומה הבעיה שיש יותר מפתרון אחד? זה דווקא נחמד שיש יותר מדרך אחת לפתור
בדיוק כתבתי את מה שהצעת:
"בנוסף אם המילון של הסרטים יהיה ארוך זה משהו שבכלל לא יהיה נוח לעדכן אותו בביטוי, כן היה אפשר להגדיר אותו מבחוץ אבל עדיין הדוגמה פה פשוט לא מתאימה וזה סתם ייסבך אותו"
ובכל אופן אין בעיה שיש הרבה פתרונות לבעיה כלשהי. הבעיה היא בהצעה הספציפית של הפתרון ב-lambda, שזה ככל הנראה ייסבך את שואל השאלה (מיותר, הופך את הקוד ליותר מסורבל, בהרבה פחות קריא, ובכלל לא יעיל יותר מפתרון אחר, ובכללי הרגל תכנותי לא נכון לעשות כאן פונקציית lambda במקרה כזה), ובאופן כללי זה לא נכון להגיד שזה "מקצר את הקוד" כפי שכתבת.
"בנוסף אם המילון של הסרטים יהיה ארוך זה משהו שבכלל לא יהיה נוח לעדכן אותו בביטוי, כן היה אפשר להגדיר אותו מבחוץ אבל עדיין הדוגמה פה פשוט לא מתאימה וזה סתם ייסבך אותו"
ובכל אופן אין בעיה שיש הרבה פתרונות לבעיה כלשהי. הבעיה היא בהצעה הספציפית של הפתרון ב-lambda, שזה ככל הנראה ייסבך את שואל השאלה (מיותר, הופך את הקוד ליותר מסורבל, בהרבה פחות קריא, ובכלל לא יעיל יותר מפתרון אחר, ובכללי הרגל תכנותי לא נכון לעשות כאן פונקציית lambda במקרה כזה), ובאופן כללי זה לא נכון להגיד שזה "מקצר את הקוד" כפי שכתבת.
זה כן מקצר את הקוד כי שמה את הכל אבל בצורה ברורה בשורה אחת. זה נכון שזה קצת מסורבל אבל אולי הוא יצליח לקרוא את זה
באותו הנושא: