מחרוזת פייתון למספר שלם, מספר שלם למחרוזת

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

מחרוזת למספר שלם בפייתון

אם קראת למדריכים הקודמים שלנו, ייתכן ששם לבת לך שבפעמים רבות השתמשנו בהמרה זו. למעשה, זה נחוץ במקרים רבים. לדוגמה, אם אתה קורא נתונים מקובץ, הם יהיו בפורמט של מחרוזת ויהיה עליך להמיר את המחרוזת למספר שלם. כעת, נעבור ישירות לקוד. אם ברצונך להמיר מספר שמיוצג במחרוזת למספר שלם, עליך להשתמש בפונקציה 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'>
Python String To 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))

הפלט של קוד זה יהיה

Python Convert String To Int With Base

שגיאת ערך כאשר מתבצעת המרת מחרוזת למספר שלם

כשמבצעים המרה ממחרוזת למספר שלם, ייתכן שתקבל חריגת 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'
Python String To Int ValueError

המרת 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 Int To String Conversion

זהו כל השאר על ההמרה בין מחרוזת למספר שלם וההפוך ב-Python. מקור: מסמך התיעוד הרשמי של Python

Source:
https://www.digitalocean.com/community/tutorials/python-string-to-int-int-to-string