שיעור מספר 4 - משתנים

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

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

3 לייקים

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

בדיוק באותו אופן, ע"י שימוש ב +.
כפי שהם הראו בשיעור במחברת הרלבנטית, בפייתון הפעולה של חיבור מוגדרת בין 2 משתנים מטיפוס מספרי כלשהו, וגם עבור 2 משתנים מטיפוס מחרוזת.
לכן אם יש לך 2 משתנים שמכילים מחרוזות כ"א, נניח name, greeting, אז אפשר להדפיס:
print(name+ " " + greeting)
המחרוזת באמצע זה רווח על מנת להפריד בין המילים במשתנים.

3 לייקים

יכולה לצלם מה שעשית?

בעיקרון, אפשר להגדיר שני משתנים ואז משתנה שלישי שמכיל את שני המשתנים.
או שפשוט לחבר את שני המשתנים, בהנחה שיש שני משתנים בשם name ו-wish, אז - - (print(name + wish

2 לייקים

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

2 לייקים

תודה רבה, מצאתי את הבעיה
הבעיה הייתה שלא שמתי גרשיים ’ ’ בערך של המשתנים. :see_no_evil:
ד"א כשניסיתי להדפיס עם ה+ כמו שכתבת זה הדפיס ללא רווח.
הדפסתי עם פסיק ( , ) וזה עבד.
print(name , wish)

לייק 1

היי! אנחנו ממליצים לא להשתמש ב, וכן להשתמש ב־+, כדי להבין טוב יותר איך עובד שרשור משתנים.
@timnar312, אם את רוצה לעשות רווח, אפשר לעשות את הדבר הבא:

var1 = "Hello"
var2 = "Yam"
var3 = var1 + " " + var2
print(var3)
2 לייקים

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

התרשים
pool_lnth = 50
pool_lnth = i
pool_wdth = 25
pool_wdth = w
pool_diagonal = ( (i ** 2) + (w **2) ) ** 0.5
pool_diagonal = pd
print (pd)

לא ניתן לקרוא למשתנה בשני שמות בצורה הזו?

הבנתי,
צריך שהמשתנה החדש יהיה בצד שמאל, בצורה כזו -

pool_lnth = 50
i = pool_lnth
pool_wdth = 25
w = pool_wdth
pool_diagonal = ( (i ** 2) + (w **2) ) ** 0.5
pd = pool_diagonal
print (pd)

הי!
כשאנחנו רוצים להגדיר משתנה, או “לשים” בתוכו משהו:

-בצד שמאל: נשים את שם המשתנה.
-בצד ימין: נגיד מה “יש בפנים”.

אז אם אתה כותב:
pool_lnth = 50, אתה יוצר משתנה בשם: pool_lnth, ואז “שם בפנים” 50.

עכשיו, אם אחרי זה תחליט לכתוב:
pool_lnth = 200

אז מה שיקרה זה שהמחשב יקח את אותו המשתנה pool lnth שכבר הגדרנו מקודם - ובמקום ה-50 שהיו בו -הוא ישים שם 200.

מה יקרה אם נכתוב:
pool_lnth = 50
ואז:
i = pool_lnth
?

מה שעשינו פה, זה בעצם לומר למחשב::
א. ליצור את המשתנה: pool_lnth, ולשים בתוכו 50.
ב. ליצור עוד משתנה בשם i. ומה יהיה בתוך i? - את מה שיש ב-pool_lnth. (זה קצת כמו בסרטים: כשחבר אחד מזמין משהו במסעדה, ואז החבר השני אומר: “אני אקח מה שהוא הזמין!” )

כלומר: זה לא שקראת למשתנה בשני שמות,
אלא שעכשיו יש לך שני משתנים:
א. pool_lnth, שיש בתוכו 50.
ב. i, שגם בתוכו יש 50. (כי שמנו בו משהו כמו מה שיש בתוך pool_inth).


שים לב שזה ממש כמו ללמד את המחשב איך קוראים לדברים, או מה הדברים האלה עושים.
אם תלמד את המחשב משהו - הוא יידע אותו.
אבל עד שלא תלמד אותו - יש מצב שהוא לא יידע.

זה למה גם מסביר למה הקוד הראשון לא רץ לך - כי ניסית לבקש מהמחשב לעשות משהו קצת “מוזר”.

בהתחלה כתבת:
pool_lnth = 50 (“תיצור משתנה בשם pool_lnth, ותשים בתוכו 50 בבקשה!”)

אבל אז כתבת:
pool_lnth = i (“קח את המשתנה pool_lnth שכבר יצרנו קודם, ועכשיו, במקום ה-50 שיש בו…תשים בפנים את מה שיש בתוך המשתנה I”).

רק שלפני זה לא הגדרת שום משתנה בשם i. (ומן הסתם גם לא שמת בו שום דבר).
אז איך אתה יכול לומר לו לשים בתוך pool_inth ערך כמו מה שיש בתוך המשתנה העונה לשם i?
מכיוון שעוד לא למדת את המחשב שיש בכלל דבר כזה משתנה בשם i - הוא לא יבין מה אתה רוצה ממנו, או מה לשים בתוך pool_inth.


כמה שאלות בשבילך:

  1. מה התכנית הבאה תדפיס?
    i = 30
    pool_lnth = 50
    pool_lnth = i
    print (pool_lnth)
    תוכל להסביר במילים את השתלשלות האירועים בקוד הזה?

  2. מה התכנית הבאה תדפיס?
    virus_multiplication = 5
    virus_multiplication = virus_multiplication * 2
    virus_multiplication = virus_multiplication * 2
    virus_multiplication = virus_multiplication * 2
    print (virus_multiplication)

  3. האם יכול להיות שבקוד שכתבת (זה שעבד) יש משתנים עודפים? תוכל לנסות לשפץ אותו כך שיהיה “חסכוני” יותר?

לייק 1

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

היי שלום נראה לי,

  1. ההדפסה תהיה של 30, הגדרת מחדש את אותו השם pool_lnth תחת הערך הראשון של i
  2. 40
  3. אפשר לקצר, אבל בכוונה רציתי להתנסות בניסוח שמות קצרים יותר למשתנים שהיה להם שם ארוך

תודה!! שמח על התרגול

תודה רבה @Yam על הקורס, נראה בנתיים שאתם משקיעים כמה שיותר כדי שנהיה מרוצים :+1: רק יש לי כמה שאלות: 1: למה לפעמים אפשר להדפיס קוד למרות שלא כתוב לפניו “print” כמו בתמונה הבאה:


2: במחברת 4: האם פייתון יתרה על שגיאה כשאני מקפיד רק על החוקים ולא על המוסכמויות?
3: למה במצב הזה הוא מראה לי שגיאה?: , אני מבין שהוא רוצה שאני ימחק את ה 0 מה “my birthday”, אבל למה? וגם אחרי שמחקתי את ה0 זה עדיין מראה על שגיאה, מה עוד חסר שם?

בגלל ה / הוא מנסה לחשב את ה"תרגיל" שנתת לו שם. אם אתה רוצה את זה בתור מחרוזת (שזה המצב במקרה זה) יש צורך לשים “” ואז הוא יקרה את זה כמלל.
אני מניח שהוא נתקל בבעיה מסוימת עם החילוק הכפול או משהו דומה.

לייק 1

גם אני תהיתי על שאלה 1…

לייק 1

היי ים, @Yam אשמח גם אם תסביר לי מה אני אמור לעשות בפסקה “תנו שם למשתנים הבאים” במחברת 4, בנוסף למה ששאלתי אתמול בנושא הזה.
בהוספה על שאלתי אתמול, אסף הסביר לי:

תיקנתי את “” ליד תאריך הלידה אבל עדיין זה לא מריץ.

@itamaraviv , אשמח מאד אם תעזור לי במחברת 4 אני תקוע פה מאתמול:
על איזה חוקים של שמות המשתנים לא הקפדתי בקוד הראשון, ומה אני אמור לעשות בפסקה “תנו שם למשתנים הבאים”, מה שעשיתי אחרי זה לא טוב?

היי, מה המשמעות של שימוש באופרטור השוואה על אופרנדים מסוג string , למשל:
“5”>“24”
“a”>“b”

תודה.