应该检查数字的每个数字并得到错误的输出

问题描述 投票:-2回答:1

我有一个任务:输入范围[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

python loops math output
1个回答
0
投票

您正在根据每个数字的一​​位数字进行审批。在附加整个数字之前,您应该检查所有这些内容。这就是为什么两次获得22的原因:第一次获得2,第二次获得一次。您得到10,因为即使1为奇数,0为偶数,所以将其附加到列表中。

将整个数字的校验移到函数check中,如果所有数字都是偶数,则使它返回True only。这样可以缩短您的代码。还请注意,如果用户以错误的顺序输入了xy,则可以将其互换。

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)

结果,输入320(但203也可以:]

[4, 6, 8, 20]
© www.soinside.com 2019 - 2024. All rights reserved.