此程序的目的是显示基于使用的输入的总和、平均值、最大值和最小值。
count=0.0
Sum=0.0
average=0.0
data=float(input("Enter a number or just ENTER to quit:"))
Min=data
Max=data
while data!="":
count+=1
number=float(data)
Sum+=number
average=Sum/count
if data<Min:
Min=data
if data>Max:
Max=data
data=float(input("Enter a number or just ENTER to quit:"))
print(count,("numbers entered."))
print("Sum:",Sum)
print("Average:",average)
print("Min:",Min)
print("Max:",Max)
问题出在第20行: data=float(输入(“输入数字或只输入退出:”)
当我按ENTER结束循环时,它说它无法将字符串转换为float和errors。我做错什么了?????
float()
函数对空输入引发异常。必须捕获此异常,循环才能按预期工作。以下是最简单的解决方案:在Python 2.x中,引发异常的实际上是
input()
调用,而不是float()
。所以,如果您使用的是Python2.x,我的解决方案是这里唯一有效的解决方案。好吧,您不应该立即转换为
float
。另外,这不是在Python中执行do..while
循环的方式。这样就不必重复代码,也不必延长
data
名称的生命周期。默认情况下,
input
的数据类型为字符串。按ENTER将返回一个空字符串,该字符串不能转换为浮点,因为该字符串为空且没有要转换的内容,这将生成错误。以下是处理此错误的两种解决方案。解决方案1
不要直接将输入转换成float,而是在将输入值赋给任何变量时将其转换。
在循环之前添加以下语句,以便在用户希望退出而不输入任何数字时处理该条件。
最后在循环的开头添加以下行。
完成代码
解决方案2
您还可以为空输入设置默认值。在这里,由于要将输入强制转换为浮点,因此可以将任意数字设置为空输入的默认值。但是,我不喜欢这样,因为如果用户输入的数字与默认值相同,则循环将终止。在下面的示例中,我只修改了两行代码,并将空输入的默认值设置为0。
相关问题 更多 >
编程相关推荐