【问题标题】:write a program that determines if user input is even or odd and loops编写一个程序来确定用户输入是偶数还是奇数并循环
【发布时间】:2016-06-04 03:57:46
【问题描述】:

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

但是,当我输入零时,它是 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()

【问题讨论】:

  • 确保您的输入类型是正确的,(字符串、整数等)您的中断的缩进似乎放错了位置
  • '0' 是偶数,想想 'X' 退出。并使用 int(entry) % 2 == 0

标签: python loops break


【解决方案1】:

如果您想在执行其他操作之前检查输入是否为零,请执行此操作。如果要在某些条件下停止循环,请将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()

【讨论】:

  • 所以通过在第一个 if 之后放置 break,这将阻止程序运行其他条件,对吗? @TigerhawkT3
  • Python 程序总是逐行执行(条件、循环、函数调用等除外)。
【解决方案2】:

这里的问题是,当 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()

【讨论】:

    【解决方案3】:

    您应该在 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()
    

    【讨论】:

      【解决方案4】:

      为什么不尝试这样的事情

      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 时要做的就是结束,为什么还要让它做额外的工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-22
        • 1970-01-01
        • 2021-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-31
        • 2013-12-09
        相关资源
        最近更新 更多