使用Python3.2将字符串转换为浮点

2024-05-17 06:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

此程序的目的是显示基于使用的输入的总和、平均值、最大值和最小值。

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。我做错什么了?????


Tags: ortonumberinputdatacountfloatmin
3条回答

float()函数对空输入引发异常。必须捕获此异常,循环才能按预期工作。以下是最简单的解决方案:

在Python 2.x中,引发异常的实际上是input()调用,而不是float()。所以,如果您使用的是Python2.x,我的解决方案是这里唯一有效的解决方案。

while True:
    count+=1
    Sum+=data
    average=Sum/count

    if data<Min:
        Min=data
    if data>Max:
        Max=data
    try:
      data=float(input("Enter a number or just ENTER to quit:"))
    except:
      break

好吧,您不应该立即转换为float。另外,这不是在Python中执行do..while循环的方式。

while True:
    data = input('Enter a number or ENTER to quit: ')
    if not data: break

    data = float(data)
    # ...

这样就不必重复代码,也不必延长data名称的生命周期。

默认情况下,input的数据类型为字符串。按ENTER将返回一个空字符串,该字符串不能转换为浮点,因为该字符串为空且没有要转换的内容,这将生成错误。以下是处理此错误的两种解决方案。

解决方案1

不要直接将输入转换成float,而是在将输入值赋给任何变量时将其转换。

data=input("Enter a number or just ENTER to quit:")

在循环之前添加以下语句,以便在用户希望退出而不输入任何数字时处理该条件。

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)

最后在循环的开头添加以下行。

data = float(data)

完成代码

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)

解决方案2

您还可以为空输入设置默认值。在这里,由于要将输入强制转换为浮点,因此可以将任意数字设置为空输入的默认值。但是,我不喜欢这样,因为如果用户输入的数字与默认值相同,则循环将终止。在下面的示例中,我只修改了两行代码,并将空输入的默认值设置为0。

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)

相关问题 更多 >