לדלג לתוכן

פייתון/פייתון גרסה 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

המרה זו היא חוקית, וכל שהיא עושה הוא לחתוך את החלק הלא-שלם מהמספר.


- המרות בין מספרים לעצמם ומחרוזות -