Python “如何修复”;ValueError:无法将字符串转换为float";?

Python “如何修复”;ValueError:无法将字符串转换为float";?,python,Python,我正在编写一个python代码,用户可以输入尽可能多的数字,直到单击enter而不输入数字。它进行计算以找到最大值、最小值、平均值和总值 但我一直在犯这个错误 numberList = [] while True: enterNumber = input("Please enter a number (RETURN/ENTER when done): ") if enterNumber == " ": break convertFlo

我正在编写一个python代码,用户可以输入尽可能多的数字,直到单击enter而不输入数字。它进行计算以找到最大值、最小值、平均值和总值

但我一直在犯这个错误

numberList = []

while True:
  enterNumber = input("Please enter a number (RETURN/ENTER when done): ")
  if enterNumber == " ":
    break
  convertFloat = float(enterNumber)
  numberList.append(convertFloat)

theMax = numberList[0]
theMin = numberList[0]
theTotal = 0.0

for value in numberList:
  if value > theMax:
    theMax = value

  if value < theMin:
    themin = value

  theTotal = theTotal + value

average = theTotal / len(numberList)

print("The numbers entered were: ")
for numbers in numberList:
    print(" ", numbers)
print("Max value was: " + str(theMax))
print("Min value was: " + str(theMin))
print("The total is: " + str(theTotal))
print("Average value was: ") + str(avg)
numberList=[]
尽管如此:
enterNumber=输入(“请输入一个数字(完成后返回/输入):”)
如果enterNumber==“”:
打破
convertFloat=浮动(输入数字)
numberList.append(convertFloat)
最大值=数字列表[0]
theMin=numberList[0]
总数=0.0
对于数字列表中的值:
如果值>最大值:
最大值=最大值
如果值<最小值:
themin=值
总和=总和+值
平均值=总长度/长度(数字列表)
打印(“输入的数字为:”)
对于数字列表中的数字:
打印(“,数字)
打印(“最大值为:+str(最大))
打印(“最小值为:+str(theMin))
打印(“总数为:+str(总数))
打印(“平均值为:”)+str(平均值)
编辑:多亏了评论中的那个人,我才修复了它。然而,有一个新的错误

Traceback (most recent call last):
  File "main.py", line 31, in <module>
    print("Average value was: ") + str(average)
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
回溯(最近一次呼叫最后一次):
文件“main.py”,第31行,在
打印(“平均值为:”)+str(平均值)
TypeError:不支持+:“NoneType”和“str”的操作数类型

发生此错误是因为程序无法将
str
值转换为
float

为什么?您的
str
值不是浮点格式,可能它只包含字符和单词,但您需要输入
float
字符串值,然后程序将其成功转换为float


如果要处理此情况,请了解
尝试,但

除外。由于程序无法将
str
值转换为
浮点值,因此会发生此错误

为什么?您的
str
值不是浮点格式,可能它只包含字符和单词,但您需要输入
float
字符串值,然后程序将其成功转换为float


如果要处理此情况,请了解
尝试,除了

错误来自以下几行:

enterNumber = input("Please enter a number (RETURN/ENTER when done): ")
if enterNumber == " ":
    break
convertFloat = float(enterNumber)
完成后,用户输入与
相对应的空白。但是,您的代码只检查
(一个空格),因此输入的
会传递到
float
,并引发错误。一个快速解决办法是改变
如果enterNumber==”“:
如果enterNumber==”“:


另外,在第31行还有一个错误,您在那里调用变量
avg
,该变量未被引用。我将其更改为
平均值

错误来自以下几行:

enterNumber = input("Please enter a number (RETURN/ENTER when done): ")
if enterNumber == " ":
    break
convertFloat = float(enterNumber)
完成后,用户输入与
相对应的空白。但是,您的代码只检查
(一个空格),因此输入的
会传递到
float
,并引发错误。一个快速解决办法是改变
如果enterNumber==”“:
如果enterNumber==”“:


另外,在第31行还有一个错误,您在那里调用变量
avg
,该变量未被引用。我将其更改为
平均值

正如在其他答案中所指出的,您可以将输入的字符串与空格(而不是空字符串)进行比较。但即使修复了错误,用户也可能输入错误的格式化数字。这些案例被命名为异常,您应该使用
try/except
construction来处理它。还有
max
min
sum
函数。顺便说一下,您可以使用
str.join
方法将列表连接到字符串中

我建议这样一个代码:

numberList=[]
尽管如此:
enterNumber=输入(“请输入一个数字(完成后返回/输入):”)
打印(输入编号)
如果没有输入数字:
打破
尝试:
convertFloat=浮动(输入数字)
numberList.append(convertFloat)
除值错误外:
打印(“您输入的号码格式错误,请再试一次。”)
最大值=最大值(数字列表)
最小值=最小值(数字列表)
总数=总和(数字列表)
平均值=总长度/长度(数字列表)
打印(“输入的数字为:”)
打印(“.join(map(str,numberList)))
打印(“最大值为:+str(最大))
打印(“最小值为:+str(theMin))
打印(“总数为:+str(总数))
打印(“平均值为:+str(平均))

正如其他答案中所指出的,您可以将输入的字符串与空格(而不是空字符串)进行比较。但即使修复了错误,用户也可能输入错误的格式化数字。这些案例被命名为异常,您应该使用
try/except
construction来处理它。还有
max
min
sum
函数。顺便说一下,您可以使用
str.join
方法将列表连接到字符串中

我建议这样一个代码:

numberList=[]
尽管如此:
enterNumber=输入(“请输入一个数字(完成后返回/输入):”)
打印(输入编号)
如果没有输入数字:
打破
尝试:
convertFloat=浮动(输入数字)
numberList.append(convertFloat)
除值错误外:
打印(“您输入的号码格式错误,请再试一次。”)
最大值=最大值(数字列表)
最小值=最小值(数字列表)
总数=总和(数字列表)
平均值=总长度/长度(数字列表)
打印(“输入的数字为:”)
打印(“.join(map(str,numberList)))
打印(“最大值为:+str(最大))
打印(“最小值为:+str(theMin))
打印(“总数为:+str(总数))
打印(“平均值为:+str(平均))

enterNumber==“”
正在检查用户是否输入了空格而不是空字符串<“code>”
是一个空格<代码>“
是一个空字符串。@khelwood谢谢,它成功了!但有一个新的错误:Traceback(最近一次调用last):文件“main.py”,第31行,打印(“平均值为:”)+str(平均)TypeError: