Python技巧: 用isnumeric等代替数值异常处理

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}")

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' + '²'
>>> s.isdigit()
True
>>> s.isnumeric()
True
>>> s.isdecimal()
False
Python技巧: 用isnumeric等代替数值异常处理

首发:https://www.jianshu.com/p/ba90e1f58f51

展开阅读全文

页面更新:2024-05-15

标签:数值   异常   英语   整数   字符串   函数   优雅   意外   常用   语言   代码   数字   技巧   方法   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top