【问题标题】:try except if two inputs are the same尝试除非两个输入相同
【发布时间】:2021-09-02 15:35:01
【问题描述】:

我目前有一个如下所示的 while 循环:

while True:
    try:
        entry1 = input("input the first number")
        entry2 = input("enter the second number")
        break
    except ValueError:
        print("number must be valid re-enter")

我想添加代码,如果用户决定输入两个相同的数字,它将重新提示用户输入两个不同的数字。我尝试使用以下内容:

while True:
    try:
        entry1 = input("input the first number")
        entry2 = input("enter the second number")
        break
    except ValueError:
        print("number must be valid re-enter")
    try: 
        if entry1 == entry2:
            raise ValueError
        else:
            break
    except ValueError as err:
        print("The two numbers cant be the same. re-enter two unique numbers!"

不幸的是,这不起作用。有谁知道我的代码出了什么问题?

【问题讨论】:

  • Break 放置不正确
  • 如果你使用 python 3,你需要用 int 或 float 包装你的输入调用(否则你永远不会遇到异常)

标签: python input duplicates try-catch except


【解决方案1】:

对于您所描述的内容,您不需要所有这些例外。例如,您可以将比较用作 while 循环的条件:

entry1 = entry2 = 0
while entry1 == entry2:
    entry1 = input("input the first number")
    entry2 = input("enter the second number")
    if entry1 == entry2:
        print("The two numbers can't be the same. re-enter two unique numbers!")

编辑: 当然,将输入转换为 int 并在不起作用时捕获错误是有意义的。可能是这样的:

entry1 = entry2 = 0
while entry1 == entry2:
    try:
        entry1 = int(input("input the first number"))
        entry2 = int(input("enter the second number"))
        if entry1 == entry2:
            print("The two numbers can't be the same. re-enter two unique numbers!")
    except ValueError:
        print("Please enter valid numbers")

【讨论】:

  • 我想保留 valueError except 方法。还有其他方法可以解决两个重复条目的问题吗?
  • 我添加了一个 try/except 以防输入不是整数。也许这就是你的意思?
【解决方案2】:

break 调用不正确。太多try-except 块。

 while True:
    try:
        entry1 = input("input the first number: ")
        entry2 = input("enter the second number: ")
    except ValueError:
        print("number must be valid re-enter.")

    if entry1 == entry2:
            print("The two numbers cant be the same. re-enter two "
                  "uniquen numbers!")
    else :
        break

【讨论】:

  • 我需要在 else: 语句中加上 break 吗?如果我把它留在那个 if 语句中,循环将结束而不提示用户输入
  • 是的,你是对的。把休息放在其他部分。因此,如果数字不相等,那么它将打破循环。
【解决方案3】:

您可以使用 assert 方法来确保 2 个输入不同,如果没有,则使用 AssertionError 捕获。

while True:
    try:
        entry1 = int(input("input the first number"))
        entry2 = int(input("enter the second number"))
        assert entry1 != entry2
        break
    except ValueError:
        print("number must be valid re-enter")
    except AssertionError:
        print("The two numbers cant be the same. re-enter two unique numbers!")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2021-10-20
    • 2016-11-24
    • 2023-03-06
    • 1970-01-01
    • 2020-12-28
    • 2010-12-14
    相关资源
    最近更新 更多