簡體   English   中英

在 Python 中使用 try/except 將 String 轉換為 Int

[英]Converting String to Int using try/except in Python

所以我很困惑如何使用 try/except function 將字符串轉換為 int。有誰知道一個簡單的 function 如何做到這一點? 我覺得我對字符串和整數還是有點模糊。 我非常有信心整數與數字有關。 字符串...不是那么多。

在使用 try/except 塊時,具體說明您試圖捕獲的異常是很重要的。

string = "abcd"
try:
    string_int = int(string)
    print(string_int)
except ValueError:
    # Handle the exception
    print('Please enter an integer')

Try/Excepts 非常強大,因為如果某些事情可能會以多種不同的方式失敗,您可以指定您希望程序如何在每種失敗情況下做出反應。

這里是:

s = "123"
try:
  i = int(s)
except ValueError as verr:
  pass # do job to handle: s does not contain anything convertible to int
except Exception as ex:
  pass # do job to handle: Exception occurred while converting to int

首先, try / except不是函數,而是語句

要將字符串( 或任何其他可以轉換的類型轉換為 Python 中的整數,只需調用int()內置函數。 如果失敗, int()raise ValueError並且您應該特別抓住這一點:

在 Python 2.x 中

>>> for value in '12345', 67890, 3.14, 42L, 0b010101, 0xFE, 'Not convertible':
...     try:
...         print '%s as an int is %d' % (str(value), int(value))
...     except ValueError as ex:
...         print '"%s" cannot be converted to an int: %s' % (value, ex)
...
12345 as an int is 12345
67890 as an int is 67890
3.14 as an int is 3
42 as an int is 42
21 as an int is 21
254 as an int is 254
"Not convertible" cannot be converted to an int: invalid literal for int() with base 10: 'Not convertible'

在 Python 3.x 中

語法略有變化:

>>> for value in '12345', 67890, 3.14, 42, 0b010101, 0xFE, 'Not convertible':
...     try:
...         print('%s as an int is %d' % (str(value), int(value)))
...     except ValueError as ex:
...         print('"%s" cannot be converted to an int: %s' % (value, ex))
...
12345 as an int is 12345
67890 as an int is 67890
3.14 as an int is 3
42 as an int is 42
21 as an int is 21
254 as an int is 254
"Not convertible" cannot be converted to an int: invalid literal for int() with base 10: 'Not convertible'

在很多情況下,我們希望從用戶那里獲得一個整數值。 用戶可能會插入應該被警告的非整數值,並且應該提示他們重試。 以下代碼段可用於從用戶處獲取整數值,並繼續提示用戶插入整數,直到輸入有效整數。

def get_integer_value():
  user_value = input("Enter an integer: ")
  try:
    return int(user_value)
  except ValueError:
    print(f"{user_value} is not a valid integer. Please try again.")
    return get_integer_value()


if __name__ == "__main__":
  print(f"You have inserted: {get_integer_value()}")
    

輸出:

Enter an integer: asd
asd is not a valid integer. Please try again.
Enter an integer: 32
You have inserted: 32

你可以做 :

try : 
   string_integer = int(string)
except ValueError  :
   print("This string doesn't contain an integer")

不幸的是,官方文檔並沒有詳細說明int()可以引發的異常; 但是,當您使用int()時,它基本上會引發兩個異常:如果值不是數字或字符串(或字節或字節數組),則為TypeError ;如果值不是真正的 map 為數字,則為ValueError

你應該管理兩者,像這樣:

try:
   int_value = int(value)
except (TypeError, ValueError):
    print('Not an integer')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM