>>> x = '1'
>>> len(x) == 1 and x.isdigit() and x > '0'
True
>>> x = 'a'
>>> len(x) == 1 and x.isdigit() and x > '0'
False
>>> x = '12'
>>> len(x) == 1 and x.isdigit() and x > '0'
False
>>> x = '1'
>>> len(x) == 1 and '1' <= x <= '9'
True
>>> x = 'a'
>>> len(x) == 1 and '1' <= x <= '9'
False
>>> x = '12'
>>> len(x) == 1 and '1' <= x <= '9'
False
3
为什么不用
>>> natural = tuple('123456789')
>>> '1' in natural
True
>>> 'a' in natural
False
>>> '12' in natural
False
检查一次初始化一次的小元组的成员资格是非常有效的,尤其是 tuple ,因为它针对少量项目进行了优化 . 使用 len 和 isdigit 是过度的 .
5 回答
您可以通过检查字符串是否包含数字以及这些数字的等效整数是否在1到9之间来检查字符串
x
是否是单个数字的自然数,即x.isdigit() and 1 <= int(x) <= 9
此外,如果
x.isdigit()
返回false,则由于使用and
的表达式而永远不会评估int(x)
(因为结果已知,因此不需要),因此如果字符串不是数字,则不会出现错误 .使用len和str.isdigit:
替代方案:使用len和链式比较:
为什么不用
检查一次初始化一次的小元组的成员资格是非常有效的,尤其是
tuple
,因为它针对少量项目进行了优化 . 使用len
和isdigit
是过度的 .以下控制台可以帮助:
我不知道为什么人们把这推到了一个新的水平 . 只需自然数就可以写,
对于范围问题:
显然,在该范围内的数字是自然数 .