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

时间:2015-04-15 21:20:16

标签: python numbers

我正在尝试创建一个程序来检查给定数字的每个数字是否小于2,可能使用

range(len(a)):

6 个答案:

答案 0 :(得分:4)

def is_bin(number):
    try:
        int(str(number), 2)
    except ValueError:
        return False
    return True

答案 1 :(得分:3)

您可以将数字转换为字符串并像这样检查:

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

答案 2 :(得分:1)

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的数字。这需要对负数和浮点数进行一些调整。

答案 3 :(得分:1)

你可以试试这个

num = 123457
>>>all(int(i)<2 for i in str(num))
False
num = 11011
>>>all(int(i)<2 for i in str(num))
True

答案 4 :(得分:0)

目前,所有解决方案都依赖于将数字转换为字符串。虽然这有效,但你可以用数字完成:

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并且循环停在那里,因为divmod(12, 10)(1, 2),余数2是大于你的最大数字。

请注意,TigerhawkT3's回答和@John La Rooy的评论可能已经确定(upvoted),因为它是迄今为止最恐怖的解决方案。包括我在内的所有其他人都使用各种编程语言,TigerhawkT3的解决方案使用Python例外效果良好。

答案 5 :(得分:0)

可以使用好的&#39;老式方法:)只需取出你的号码并提取每个数字,然后更新你的号码。

while yournumber != 0 :
    digit = yournumber % 10
    yournumber = younumber / 10
    if digit < 2
        do stuff

但我确信有更简单(也许不是那么快)的方法。