编写一个重复读取数字的程序,直到用户输入“完成”。输入“完成”后,打印出数字的总数,计数和平均值。如果用户输入的数字不是数字,请使用try和except检测错误并打印错误消息并跳到下一个数字。
这就是我所拥有的。
total = 0
count = 0
average = 0
while True:
number = input("Enter a number:")
if number == "done":
break
try:
total += numbers
count += 1
average = total / len(number)
except:
print ("Invalid input")
continue
print (total, count, average)
当我运行它时,由于某种原因,我总是得到无效输入。我的除外部分一定是错的。
编辑: 这就是我现在所拥有的,它的工作原理。但是,我确实需要尝试,除非是非数字。
total = 0
count = 0
average = 0
while True:
number = input("Enter a number:")
if number == "done":
break
total += float(number)
count += 1
average = total / count
print (total, count, average)
我想我明白了?!?!
total = 0
count = 0
average = 0
while True:
number = input("Enter a number:")
try:
if number == "done":
break
total += float(number)
count += 1
average = total / count
except:
print ("Invalid input")
print ("total:", total, "count:", count, "average:", average)
如果这花了我一个小时,我应该感到恐慌吗?
这不是我的第一种编程语言,但它已经有一段时间了。
答案 0 :(得分:0)
问题是当您尝试使用输入时:
try:
total += numbers
首先,没有值数字;你的变量是单数,而不是复数。其次,您必须将文本输入转换为数字。试试这个:
try:
total += int(number)
答案 1 :(得分:0)
这是因为当number是int时没有len(数字)。 len用于查找列表/数组的长度。您可以通过注释try / except / continue来自行测试。我认为下面的代码更像是你所追求的?
total = 0
count = 0
average = 0
while True:
number = input("Enter a number:")
if number == "done":
break
try:
total += number
count += 1
average = total / count
except:
print ("Invalid input")
continue
print (total, count, average)
请注意仍有一些问题。例如,您确实必须在输入框中键入“done”以便不会出现错误,但这会修复您的初始问题,因为您有len(数字)而不是平均值。还要注意你有+ =数字。当你的变量是数字而不是数字。小心你的变量名称/用法。
答案 2 :(得分:0)
解决方案......
total = 0
count = 0
average = 0
while True:
number = input("Enter a number:")
if number == "done":
break
else:
try:
total += int(number)
count += 1
average = total / count
except ValueError as ex:
print ("Invalid input")
print('"%s" cannot be converted to an int: %s' % (number, ex))
print (total, count, average)
代码问题:
答案 3 :(得分:0)
我知道这已经很老了,但是以为我会把2美分扔进去(因为多年以后我本人也在使用相同的示例进行学习)。您可以尝试:
Proxy-Authorization
我发现这是一种清洁剂(个人比较容易使用)。