נושא
טיפוסים והסבה
ארבעה טיפוסים, ואיך עוברים ביניהם.
ארבעת הטיפוסים
| טיפוס | דוגמה | הערה |
|---|---|---|
str |
"Python", 'a' |
כל דבר במרכאות, גם "5" |
int |
2, -7 |
שלם |
float |
7.25, 7.0 |
עשרוני. 7.0 הוא float ולא int |
bool |
True, False |
אות גדולה. כל מספר שאינו 0 נחשב True |
בודקים טיפוס עם type():
>>> type(7.0)
<class 'float'>
>>> type("7")
<class 'str'>
הסבה
כותבים את הטיפוס הרצוי, ובסוגריים את הערך:
>>> int("5") ** 2
25
>>> float("5")
5.0
>>> str(3) + str(3)
'33'
>>> bool(0)
False
איפה זה תופס אתכם
input מחזיר תמיד מחרוזת. גם אם הוקלד 5, מתקבל "5". כל חישוב
על קלט צריך הסבה קודם. בלי זה:
>>> "5" ** 2
Traceback (most recent call last):
...
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
+ תלוי בטיפוס. על מספרים הוא חיבור, ועל מחרוזות שרשור. 3 + 3
הוא 6, ו-"3" + "3" הוא "33".
math.sqrt מחזירה float. math.sqrt(9) הוא 3.0.
לכתוב טוב
משתנה שהתחיל כמספר לא עובר להצביע על מחרוזת. זה אפשרי, וזה bad practice: פעולה שמתאימה לטיפוס אחד נשברת על השני.
בדיקה עצמית
- מה הטיפוס של
7.0? ושל"7.0"? - מה יודפס:
print(int("4") + 1)? - למה
input("age: ") + 1נכשל?
תשובות. 1: float, ו-str. 2: 5. 3: input מחזיר מחרוזת, ואי
אפשר לחבר מחרוזת ומספר. צריך int(input("age: ")) + 1.