将try / except与if / else语句一起使用

时间:2019-10-19 19:57:54

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

我需要从用户输入中获取一组数字的平均值,但还需要使用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 输入数字:鲍勃 错误,请重试

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您只需要在希望出现错误的代码行上使用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)