【问题标题】:it doesn't loop but just breaks even if i input Y它不会循环,但即使我输入 Y 也会中断
【发布时间】:2022-01-20 05:48:32
【问题描述】:
def interact():
    while True: 
        try:
            num = int(input("Please input an integer: "))
            if (num % 2) == 0:
                print ("{0} is even".format(num))
            else:
                print("{0} is odd".format(num))
            num_two = int(input('Do you want to play again n/Y:'))
            
        except:
             if num_two == "y":
                continue 
        finally:
            print("Goodbye")
            break

【问题讨论】:

  • 你的 finally 块有一个中断。 finally 块总是运行,它总是中断。如果您不希望它每次都中断,请不要在 finally 块中设置中断。

标签: python if-statement try-catch except finally


【解决方案1】:
def interact(): 
   while True:
       try:
          num = int(input("Please input an integer: ")) 
          if (num % 2) == 0: print ("{0} is even".format(num))
          else: print("{0} is odd".format(num))
          num_two = int(input('Do you want to play again n/Y:'))
       except:
          if num_two == "y":
             continue 
       finally:
          print("Goodbye")
          break

这段代码的问题是'break'使得你脱离了while true循环(我认为)

因此我认为删除“中断”可能会解决它?

【讨论】:

    【解决方案2】:

    您必须将特定错误添加到 except 并从 finally 中删除 break:

    try:
        user_input = input()
        int(user_input)
    except ValueError:
        print('not a number')
        if user_input = 'y':
            continue
        else:
            break
    finally:
        print('Finnaly')
    

    【讨论】:

    • 如果用户输入y,我应该怎么做才能让它继续?
    • 我改变了我的例子。在转换为 int 之前,您必须有另一个 var 输入
    • 你的问题解决了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多