编写一个程序来确定用户输入是偶数还是奇数并循环

write a program that determines if user input is even or odd and loops

我正在尝试制作一个程序,该程序将不断接受用户输入并确定用户输入是偶数还是奇数。程序只会在输入零时停止。

但是,当我输入零时,它 prints 0 is an even number 后跟 All done!。预期输出只是 All done!。这是我的代码:

def main():
    total = 0
    count = 0

    while True:
        entry=int(input('Enter a number or 0 to quit:'))
        if entry % 2 == 0:
            print (format (entry), 'is an even number.')
        else:
            print (format (entry),'is an odd number.')

        if entry == 0:
            print ('All done!')
            break
main()

这里的问题是,当 Python 读取您的代码时,它是自上而下读取的。当它首先到达 if entry % 2 == 0: 时,将输出那里的任何内容。然后它继续 if entry == 0 并再次输出那里的任何内容。

你想要的是它应该只转到一个代码块并执行它。您还希望它优先 entry == 0,因此您可以将其移至顶部。在这种情况下,elif 是您要查找的命令。

def main():
    total = 0
    count = 0

    while True:
        entry=int(input('Enter a number or 0 to quit:'))
        if entry == 0:
            print ('All done!')
            break
        elif entry % 2 == 0:
            print (format (entry), 'is an even number.')
        else:
            print (format (entry),'is an odd number.')
main()

如果您想在执行任何其他操作之前检查输入是否为零,请执行此操作。如果您想在某些条件下停止循环,请将 break 放在条件语句中。请注意 counttotal 未使用。此外,没有格式的 format() 是多余的。

def main():

    while True:
        entry = int(input('Enter a number or 0 to quit:'))    
        if entry == 0:
            print('All done!')
            break
        if entry % 2 == 0:
            print(entry, 'is an even number.')
        else:
            print(entry, 'is an odd number.')

main()

您应该在 entry%2==0 条件之前检查 0,因为 0%2==0 不会中断循环。

其次使用raw_input代替输入。

def main():
    total = 0
    count = 0

    while True:
        entry=int(raw_input('Enter a number or 0 to quit:'))

        if entry == 0:
            print ('All done!')
            break



        if entry % 2 == 0:
            print (format (entry), 'is an even number.')
        else:
            print (format (entry),'is an odd number.')

main()

为什么不尝试这样的事情

if entry == 0:   
     print ('All done!')
     break 
else  if entry % 2 == 0:
     print (format (entry), 'is an even number.')
else:
     print (format (entry),'is an odd number.')

抱歉缩进错误。我对 python 不是很熟悉。如果它在遇到 0 时需要做的只是结束

,为什么还要让它做额外的工作呢?