<p>默认情况下,<code>input</code>的数据类型为<strong>字符串</strong>。按ENTER将返回一个空字符串,该字符串不能转换为浮点,因为该字符串为空且没有要转换的内容,这将生成错误。以下是处理此错误的两种解决方案。</p>
<h2>解决方案1</h2>
<p>不要直接将输入转换成float,而是在将输入值赋给任何变量时将其转换。</p>
<pre><code>data=input("Enter a number or just ENTER to quit:")
</code></pre>
<p>在循环之前添加以下语句,以便在用户希望退出而不输入任何数字时处理该条件。</p>
<pre><code>if not data: # If user wants to exit without entering any number
Max = 0
Min = 0
else: # Cast the inputs by user to float
Max = float(data)
Min = float(data)
</code></pre>
<p>最后在循环的开头添加以下行。</p>
<pre><code>data = float(data)
</code></pre>
<p><strong>完成代码</strong></p>
<pre><code>count=0.0
Sum=0.0
average=0.0
data=input("Enter a number or just ENTER to quit:")
if not data:
Max = 0
Min = 0
else:
Max = float(data)
Min = float(data)
while data!='':
data = float(data)
count+=1
number=float(data)
Sum+=number
average=Sum/count
if data<Min:
Min=data
if data>Max:
Max=data
data=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)
</code></pre>
<h2>解决方案2</h2>
<p>您还可以为空输入设置默认值。在这里,由于要将输入强制转换为浮点,因此可以将任意数字设置为空输入的默认值。<strong>但是,我不喜欢这样,因为如果用户输入的数字与默认值相同,则循环将终止。</strong>在下面的示例中,我只修改了两行代码,并将空输入的默认值设置为0。</p>
<pre><code>count=0.0
Sum=0.0
average=0.0
data=float(input("Enter a number or just ENTER to quit:") or 0)
Min=data
Max=data
while data!=0:
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:") or 0)
print(count,("numbers entered."))
print("Sum:",Sum)
print("Average:",average)
print("Min:",Min)
print("Max:",Max)
</code></pre>