如何检查数字的每个数字是否小于2?(python)
我试图创建一个程序,检查给定数字的每个数字是否小于2,可能使用如何检查数字的每个数字是否小于2?(python),python,numbers,Python,Numbers,我试图创建一个程序,检查给定数字的每个数字是否小于2,可能使用 range(len(a)): Python是动态类型的,所以这相对容易做到。我建议将整数转换为字符串,然后遍历字符串并检查每个数字 使用该方法,代码可能看起来像: your_number_string = str(your_number) for d in range(0, len(your_number_string)): i = your_number_string[d] if (int(i) > 2)
range(len(a)):
Python是动态类型的,所以这相对容易做到。我建议将整数转换为字符串,然后遍历字符串并检查每个数字 使用该方法,代码可能看起来像:
your_number_string = str(your_number)
for d in range(0, len(your_number_string)):
i = your_number_string[d]
if (int(i) > 2):
raise new Exception("Digit " + str(i) + "is not less than 2")
需要注意的是:抛出赤裸裸的异常是不好的做法。如果您喜欢异常路由,那么扩展异常类并创建自己的异常路由。这还假设您的数字是有效的整数。最后,这也只会提醒您第一个大于2的数字,它不会告诉您任何后续的数字也大于2。这需要对负数和浮点数进行一些调整。您可以尝试此方法
num = 123457
>>>all(int(i)<2 for i in str(num))
False
num = 11011
>>>all(int(i)<2 for i in str(num))
True
您可以将数字转换为字符串,并进行如下检查:
all(int(c) < 2 for c in str(n))
例如:
>>> all(int(c) < 2 for c in str(1011))
True
>>> all(int(c) < 2 for c in str(1211))
False
目前,所有的解决方案都依赖于将数字转换为字符串。虽然这样做有效,但您可以完全以数字方式进行:
def check_digits(nbr, max=1):
nbr = abs(nbr) # only look at a positive numbers
while nbr != 0:
nbr, rem = divmod(nbr, 10)
if rem > max: return False
return True
这里的诀窍是每次检查最右边的数字时。完成后,数字将除以10,忽略余数。所以1201变为120,它变为12,循环停止在那里,因为divmod12,10是1,2,剩余的2,大于最大数字
请注意,答案和@John La Rooy的评论很可能将其锁定,因为它是迄今为止最具python风格的解决方案。所有其他人,包括我的,都为各种编程语言工作,TigerhawkT3的解决方案使用Python异常,效果很好。可以使用一种很好的老式方法:只需获取您的数字并提取每个数字,然后更新您的数字
while yournumber != 0 :
digit = yournumber % 10
yournumber = younumber / 10
if digit < 2
do stuff
但我相信有更简单的方法,也许没有那么快。这个问题没有多大意义。。。这个数字是int,str还是什么?射程会有什么帮助。编写一些代码,然后返回一个示例。stra中的c在'01'中的allc,或者a中的c在'01'中的allc已经是字符串。stra中的c在'01'中的allc*或stra中的c在'01'中的allintc<2检查intstra,2是否抛出一个值错误真正的问题:检查一个数字是否是二进制的。对于范围为0的d,lenyour_number_string是一个非常不和谐的字符串,考虑到你可以在你的_number_string中为c做些什么,我同意,但是我解释了使用rangelen的意思是,这就是我们想要的。这是一个很好的观点,但会更干净。加上一个创意
while yournumber != 0 :
digit = yournumber % 10
yournumber = younumber / 10
if digit < 2
do stuff