Python技巧: 用isnumeric等代替數值異常處理
實現Python程式碼,輸入數字,然後輸出這個數字的三倍。
>>> n = input("Enter a number: ") Enter a number: 6 >>> print(f"{n} * 3 = {n*3}") 6 * 3 = 666
input函式總是返回字串。可以通過int轉換字串為整數:
>>> n = int(n) >>> print(f"{n} * 3 = {n*3}") 6 * 3 = 18
但是,如果輸入不是數值,則會報錯:
Enter a number: abcd ValueError: invalid literal for int() with base 10: 'abcd'
比較常用的方法是在“try”塊中執行轉換,並捕獲我們可能獲得的任何異常。但字串的isdigit方法可以更優雅地解決這個問題。
>>> '1234'.isdigit() True >>> '1234 '.isdigit()# space at the end False >>> '1234a'.isdigit()# letter at the end False >>> 'a1234'.isdigit()# letter at the start False >>> '12.34'.isdigit()# decimal point False >>> ''.isdigit()# empty string False
str.isdigit對正則表示式'^ \ d + $'返回True。
>>> n = input("Enter a number: ") >>> if n.isdigit(): n = int(n) print(f"{n} * 3 = {n*3}")
- 參考資料
- 討論qq群144081101 591302926 567351477
- 本文最新版本地址
- 本文涉及的python測試開發庫 謝謝點贊!
- 本文相關海量書籍下載
- 2018最佳人工智慧機器學習工具書及下載(持續更新)
Python還包括另一方法str.isnumeric,他們有什麼區別?
>>> n = input("Enter a number: ") >>> if n.numeric(): n = int(n) print(f"{n} * 3 = {n*3}")
字串只包含數字0-9時str.isdigit返回True。str.isnumeric則還能識別英語意外語言的數值。
>>> '一二三四五'.isdigit() False >>> '一二三四五'.isnumeric() True >>> int('二') ValueError: invalid literal for int() with base 10: '二'
str.isdecimal
>>> s = '2²'# or if you prefer, s = '2' + '\u00B2' >>> s.isdigit() True >>> s.isnumeric() True >>> s.isdecimal() False