我需要从用户输入中获取一组数字的平均值,还需要使用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输入数字:鲍勃错误,请重试
您只需要在希望出现错误的代码行上使用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)
您可以在循环内使用try / catch。