问题在于:该程序读取浮点值序列并计算它们的平均值。零值用作标记。改进循环,只有在用户输入字母 Q 时才退出循环。
这是我的代码:
total = 0.0
count = 0
# TODO: Fix this program so that it only stops reading numbers
# when the user enters Q.
value = float(input("Enter a real value or Q to quit: "))
while value != "Q" :
total = total + value
count = count + 1
value = float(input("Enter a real value or Q to quit: "))
avg = total / count
print(avg)
这是我的错误信息: 文件“/tmp/codecheck.zUZpqo8apX/computesum.py”,第 11 行,在 value = float(input("输入一个实际值或Q退出:")) ValueError: 无法将字符串转换为浮点数:'Q'
答案 0 :(得分:1)
关于您的代码:
value = float(input("Enter a real value or Q to quit: "))
如果您想处理像 Q
这样的非浮点值,此时您应该将其视为 string,而不是立即尝试将其转换为 {{1 }}(如您所见,float
时会失败)。
换句话说,类似于:
Q
如果您输入的值既不是value = input("Enter a real value or Q to quit: ")
while value != "Q" :
total = total + float(value)
count = count + 1
value = input("Enter a real value or Q to quit: ")
也不是有效的Q
,但您可以通过捕获异常并调整行为来处理此问题:< /p>
float
如果在这种情况下 value = input("Enter a real value or Q to quit: ")
while value != "Q" :
try:
total = total + float(value)
count = count + 1
except ValueError:
print("Not a valid float value, try again.")
value = input("Enter a real value or Q to quit: ")
调用失败,则 float()
和 total
都不会更新,count
块将被执行,让用户知道有一个问题。
我要提到的另一件事是,您应该考虑第一件事 是输入 except
的情况。在这种情况下,Q
仍将设置为零,因此您可能不想除以它。相反,您可以执行以下操作:
count