【问题标题】:Using try/except with if/else statements将 try/except 与 if/else 语句一起使用
【发布时间】:2019-10-19 19:57:54
【问题描述】:

我需要从用户输入中获取一组数字的平均值,还需要使用try,除了输入“bob”会输出错误消息,然后让他们再试一次。

我尝试在 if/else 语句中使用 try/except,但它只是在第一个整数输入后产生错误消息(错误)。现在,我将其设置为运行用户输入,生成平均值,并在输入“bob”时提供错误消息。但它需要让用户继续尝试,而不是结束程序。

try:
    val = int(input("Enter how many numbers: "))
    sums = 0
    if val == 0:
        average = "error"
        print("error, try again")
    else:
        for value in range(val):
            num = float(input("enter a number: "))
            sums = sums + float(num)
            average = sums / val
            num = "bob"
            #num = float(input("enter a number: "))
        print("Average: " + str(average))
except:
    print("error, try again")

预计: 号码数:3 输入数字:2.5 输入号码:鲍勃 错误,重试 输入数字:1.5 输入数字:3.5 平均:2.5

实际: 输入多少个数字:3 输入一个数字:2.5 输入一个数字:鲍勃 错误,重试

【问题讨论】:

    标签: python-3.x if-statement try-except


    【解决方案1】:

    您只需要在您期望出错的代码行上使用 try/except。在这种情况下,当您将用户输入转换为 int 或 float。

    由于您使用的是 for 循环,因此如果输入无效,您将错过一个数字。在这种情况下,while 循环会更好。

    以下是可行的方法:

    val = input("Enter how many numbers: ")
    
    while not val.isdigit() or val == '0':
        print("error, try again")
        val = input("Enter how many numbers: ")
    val = int(val)
    valid_nums = 0
    sums = 0
    while valid_nums < val:
        try:
            num = float(input("enter a number: "))
            valid_nums += 1
            sums += num
        except ValueError:
            print("error, try again")
            continue
    print("Average:", sums/val)
    

    【讨论】:

      【解决方案2】:

      您可以在循环中使用 try/catch

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-09
        • 2021-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-04
        • 1970-01-01
        相关资源
        最近更新 更多