我正在尝试创建一个程序来检查给定数字的每个数字是否小于2,可能使用
range(len(a)):
答案 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
但我确信有更简单(也许不是那么快)的方法。