פייתון/פייתון גרסה 2/המרות בין מספרים לעצמם ומחרוזות
לפעמים יש לנו עצם מסוג אחד, אך אנו רוצים להשתמש בו בצורה שונה.
הבעיה
[עריכה]נתבונן לדוגמה בקטע הבא:
>>> 'I have ' + 'three' + ' apples'
'I have three apples'
עד כאן הכל בסדר: שירשרנו שלוש מחרוזות. גם הקטע הבא בסדר:
>>> 'I have ' + '3' + ' apples'
'I have 3 apples'
שוב שירשרנו שלוש מחרוזות, כשהאמצעית היא המחרוזת '3'. לעומת זאת, הקטע הבא יוצר בעיה:
>>> 'I have ' + 3 + ' apples'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
המתרגם מודיע שאינו יכול לשרשר מחרוזת ומספר שלם. כאן, ' I have' ו-' apples' הן מחרוזות, ואילו 3 הוא מספר שלם.
פונקציות ההמרה
[עריכה]כדי להמיר עצם מסוג אחד באותו עצם אך מסוג אחר (אם הדבר אפשרי), רושמים:
<new_type>(<obj>)
כאשר new_type הוא הסוג החדש, וobj הוא העצם. לדוגמה, כדי להמיר את המספר השלם 3 למחרוזת 3, רושמים:
>>> str(3)
'3'
כדי להמיר את המספר בנקודה-הצפה 3.1 למחרוזת '3.1', רושמים:
>>> str(3.1)
'3.1'
כדי להמיר את המחרוזת '3' למספר השלם 3, רושמים:
>>> int('3')
3
המרות לא-חוקיות
[עריכה]לא כל מחרוזת אפשר להמיר למספר שלם, שהרי יש מחרוזות שאינן מתארות מספר. במקרה שננסה לעשות כן, נקבל שגיאה:
>>> float('hello')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
עם זאת, ניתן להמיר מספר נקודה-צפה למספר שלם:
>>> int(3.1)
3
המרה זו היא חוקית, וכל שהיא עושה הוא לחתוך את החלק הלא-שלם מהמספר.
- | המרות בין מספרים לעצמם ומחרוזות | - |