我有一个任务:输入范围[x; y]那么我应该检查该范围内的每个数字并检查数字中的每个数字。如果很奇怪,我应该打印出来例如:3、20我应该打印4,6,8,20
def check(num):
if int(num) % 2 == 0:
return True
x, y = int(input()), int(input())
numbers = []
if x <= y:
while x != y:
for i in str(x):
if check(i):
numbers.append(x)
x += 1
else:
while y != x:
for i in str(y):
i = int(i)
if check(i):
numbers.append(y)
y += 1
if y == x:
for i in str(x):
if check(i):
numbers.append(x)
print(numbers)
它打印[2,4,6,8,10,12,14,16,18,20,20,21,22,22,23,24,24,25,26,26,27,28,28,29]而不是2,4,6,8,20,22,24,26,28
您正在根据每个数字的一位数字进行审批。在附加整个数字之前,您应该检查所有这些内容。这就是为什么两次获得22
的原因:第一次获得2
,第二次获得一次。您得到10
,因为即使1
为奇数,0
为偶数,所以将其附加到列表中。
将整个数字的校验移到函数check
中,如果所有数字都是偶数,则使它返回True
only。这样可以缩短您的代码。还请注意,如果用户以错误的顺序输入了x
和y
,则可以将其互换。
check
函数发现数字False
为奇数后立即返回i
,并且您可以看到,如果循环结束并且所有数字均为偶数,则它只能返回True
。
def check(num):
for i in str(num):
if int(i) % 2 != 0:
return False
return True
x, y = int(input()), int(input())
if x > y:
x,y = y,x
numbers = []
while x <= y:
if check(x):
numbers.append(x)
x += 1
print (numbers)
结果,输入3
和20
(但20
和3
也可以:]
[4, 6, 8, 20]