קשה לי להבין (מתוך מחברת 3 שבוע 2)

len(‘hello world’) * 2 == len(‘hello world’ * 2)
השמאלי נראה לי הגיוני (בערך) מהפונ׳ יוצא ערך מספרי ומכפילים אותו בשתיים אבל את הימני קשה לי להבין.
איך זה עובד ככה?

בצד שמאל סדר הפעולות הוא: בדיקה באמצעות הפונקציה len() מה האורך של המחרוזת ‘hello world’, (11 תווים), והכפלה של התוצאה ב-2, כלומר 22 בסך הכל.
בצד ימין סדר הפעולות הוא הכפלה ב-2 של המחרוזת ‘hello world’, כלומר לשרשר אותה לעצמה ולכתוב אותה פעמיים ברצף, ואז בדיקה מה האורך של המחרוזת שיצאה (hello worldhello world).
גם כאן התוצאה היא 22 ולכן התוצאה של הביטוי כולו, שהוא ביטוי בוליאני, היא True.

4 לייקים

היי! התחבטתי עם השאלה הזו כמה פעמים. אם תריץ את הקוד תשים לב שבסוף יוצא True.

בסופו של דבר- תשים לב שבשני האגפים פשוט מכפילים בשתיים את כמות האותיות שיש בסטרינג hello world.

בשמאלי- הפונקצייה של len מתבקשת לחשב כמה אותיות יש, ולהכפיל בשתיים.
hello wolrd = 11
len(‘hello world’)*2 ==22

בימני- בתוך הסוגריים מבקשים מפייתון להכפיל ב2 את הביטוי hello world ואחרי זה מבקשים מפייתון להוציא את האורך של ערך הביטוי בתוך הסוגריים.
('len(‘hello world’*)== len(‘hello world’ ‘hello world’

מכאן שהאורך הוא 22.

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

3 לייקים

תודה רבה לשתיכן!! (:hugs:

לייק 1

היי, גם אני הסתבכתי עם השאלה הזאת.
ההסבר שלכן ברור מאוד וגם אני חשבתי עליו, אבל מה שמבלבל זה שחזרו כמה פעמים על העניין שלא ניתן לבצע פעולות חשבוניות על שילוב של מחרוזת עם ערך מספרי. זה תמיד דובר בדוגמאות של חיבור/חיסור (כמו 1+“3”) אבל הנחתי שזה נכון גם לפעולות אחרות כמו כפל, חילוק, חזקה…
אז למה בעצם במקרה הזה שמבצעים פעולה חשבונית של כפל בין מחרוזת (‘hello world’) לבין מספר (2) זה כן עובד?

לייק 1

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