המרות בין טיפוסים

המרות בין טיפוסים#

נניח שאנחנו רוצים לבדוק כמה ספרות יש במספר כלשהו. לדוגמא - ב10 יש שתי ספרות, וב256 יש שלוש ספרות. אם נחשוב על המספר כ־int, זה לא ממש פשוט. לא ניתן לבצע len על ערך מסוג int. למעשה, כרגע אין בידינו את הכלים לבדוק זאת (אך בהמשך הקורס נלמד אותם ואף נחזור לשאלה הזו).

מצד שני, אם היינו יכולים לקבל את המספר 10 כמחרוזת “10”, אז יש לנו את הפקודה len וזה נהיה פשוט מאוד!

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

num = 12345
print(type(num))

num = str(num)
print(type(num))
<class 'int'>
<class 'str'>

וכך נוכל לספור את כמות הספרות:

num = 12345
print(len(str(num)))
5

אילו טיפוסים ניתן להמיר?#

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

  • את המחרוזת “12” נוכל להמיר לטיפוסים int וfloat

  • את המחרוזת “10.5” נוכל להמיר בהצלחה לfloat בלבד

  • את המחרוזת “hello world” לא ניתן להמיר בהצלחה באף אחד מהטיפוסים המספריים.

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

התנסו בעצמכם

num = 123
print(num, type(num))
num_str = str(num)
print(num_str, type(num_str))
num_float = float(num)
print(num_float, type(num_float))
123 <class 'int'>
123 <class 'str'>
123.0 <class 'float'>

מה יקרה אם ניסיון המרה נכשל? מה יקרה אם ננסה להמיר לטיפוס לא מתאים?

# Your code here

האם ניתן להמיר float לא שלם לint? בדקו זאת!

# Your code here

אילו טיפוסים ניתן להמיר לבוליאני? לאילו טיפוסים ניתן להמיר ערך בוליאני?

print(int(True))
print(bool(0))

# Try converting more values and see what happens!
1
False