Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查数字的每个数字是否小于2?(python)_Python_Numbers - Fatal编程技术网

如何检查数字的每个数字是否小于2?(python)

如何检查数字的每个数字是否小于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)

我试图创建一个程序,检查给定数字的每个数字是否小于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