במדריך זה, נלמד כיצד להמיר מחרוזת בפייתון למספר שלם ולהפך, מספר שלם למחרוזת בפייתון. במדריך הקודם שלנו למדנו על פונקציית הוספת פריט לרשימה בפייתון.
מחרוזת למספר שלם בפייתון
אם קראת למדריכים הקודמים שלנו, ייתכן ששם לבת לך שבפעמים רבות השתמשנו בהמרה זו. למעשה, זה נחוץ במקרים רבים. לדוגמה, אם אתה קורא נתונים מקובץ, הם יהיו בפורמט של מחרוזת ויהיה עליך להמיר את המחרוזת למספר שלם. כעת, נעבור ישירות לקוד. אם ברצונך להמיר מספר שמיוצג במחרוזת למספר שלם, עליך להשתמש בפונקציה int()
. ראה את הדוגמה הבאה:
num = '123' # string data
# הדפס את הסוג
print('Type of num is :', type(num))
# המרה באמצעות int()
num = int(num)
# הדפס את הסוג again
print('Now, type of num is :', type(num))
פלט הקוד הבא יהיה
Type of num is : <class 'str'>
Now, type of num is : <class 'int'>

המרת מחרוזת למספר שלם מבסיס שונה
אם המחרוזת שברצונך להמיר למספר שלם שייכת לבסיס מספר שונה מהבסיס 10, תוכל לציין את הבסיס להמרה. אך חשוב לזכור שהמספר השלם שיייצא יהיה תמיד בבסיס 10. דבר נוסף שעליך לזכור הוא שהבסיס שסופק חייב להיות בין 2 ל-36. ראה את הדוגמה הבאה להבנת ההמרה ממחרוזת למספר שלם עם הטורף של בסיס.
num = '123'
# הדפס את המחרוזת המקורית
print('The original string :', num)
# בהנחה ש-'123' היא בבסיס 10, המר אותה לבסיס 10
print('Base 10 to base 10:', int(num))
# בהנחה ש-'123' היא בבסיס 8, המר אותה לבסיס 10
print('Base 8 to base 10 :', int(num, base=8))
# בהנחה ש-'123' היא בבסיס 6, המר אותה לבסיס 10
print('Base 6 to base 10 :', int(num, base=6))
הפלט של קוד זה יהיה

שגיאת ערך כאשר מתבצעת המרת מחרוזת למספר שלם
כשמבצעים המרה ממחרוזת למספר שלם, ייתכן שתקבל חריגת ValueError
exception. החריגה הזו מתרחשת אם המחרוזת שברצונך להמיר אינה מייצגת מספרים. לדוגמה, נניח שברצונך להמיר מספר הקסדצימלי למספר שלם. אם לא מועברת הארגומנט base=16 לפונקציה int(), יתקבל ValueError
אם ישנו ספרה שאינה שייכת למערכת המספרים העשרונית. הדוגמה הבאה תמחיש את החריגה הזו בעת המרת מחרוזת למספר שלם.
"""
Scenario 1: The interpreter will not raise any exception but you get wrong data
"""
num = '12' # this is a hexadecimal value
# המשתנה נחשב כערך עשרוני במהלך ההמרה
print('The value is :', int(num))
# המשתנה נחשב כערך הקסדצימלי במהלך ההמרה
print('Actual value is :', int(num, base=16))
"""
Scenario 2: The interpreter will raise ValueError exception
"""
num = '1e' # this is a hexadecimal value
# המשתנה נחשב כערך הקסדצימלי במהלך ההמרה
print('Actual value of \'1e\' is :', int(num, base=16))
# המשתנה נחשב כערך עשרוני במהלך ההמרה
print('The value is :', int(num)) # this will raise exception
הפלט של הקוד לעיל יהיה:
The value is : 12
Actual value is : 18
Actual value of '1e' is : 30
Traceback (most recent call last):
File "/home/imtiaz/Desktop/str2int_exception.py", line 22, in
print('The value is :', int(num)) # this will raise exception
ValueError: invalid literal for int() with base 10: '1e'

המרת Int למחרוזת ב-Python
המרת מספר שלם למחרוזת אינה דורשת מאמץ או בדיקה. פשוט יש להשתמש בפונקציה str()
כדי לבצע את ההמרה. ראה את הדוגמה הבאה.
hexadecimalValue = 0x1eff
print('Type of hexadecimalValue :', type(hexadecimalValue))
hexadecimalValue = str(hexadecimalValue)
print('Type of hexadecimalValue now :', type(hexadecimalValue))
הפלט של הקוד לעיל יהיה:
Type of hexadecimalValue : <class 'int'>
Type of hexadecimalValue now : <class 'str'>

זהו כל השאר על ההמרה בין מחרוזת למספר שלם וההפוך ב-Python. מקור: מסמך התיעוד הרשמי של Python
Source:
https://www.digitalocean.com/community/tutorials/python-string-to-int-int-to-string