ValueError:在Python 3中无法将字符串转换为浮点错误
嗨,我正在尝试创建一个程序,要求数字在结尾处求平均值,并在输入空白时给出平均值。我的代码如下所示:ValueError:在Python 3中无法将字符串转换为浮点错误,python,python-3.x,Python,Python 3.x,嗨,我正在尝试创建一个程序,要求数字在结尾处求平均值,并在输入空白时给出平均值。我的代码如下所示: number_of_numbers = 0 sum_of_numbers = 0 zero_number = 0 while number_of_numbers > -1: decimal_number = input('Input a number: ') if decimal_number == (''): decimal_number = zero_nu
number_of_numbers = 0
sum_of_numbers = 0
zero_number = 0
while number_of_numbers > -1:
decimal_number = input('Input a number: ')
if decimal_number == (''):
decimal_number = zero_number
else:
decimal_number = float(decimal_number)
number_of_numbers = number_of_numbers + 1
sum_of_numbers = sum_of_numbers + decimal_number
if decimal_number == '':
break
print((sum_of_numbers + zero_number) / number_of_numbers)
但它一直说,空白是一个字符串。我试图通过给一个空白空间分配一个新的变量来解决这个问题,该变量的计数为零,但由于某种原因,我一直得到错误。出于某种原因,它也给了我一个0的除法
任何帮助都将不胜感激
谢谢当你碰到空位时,你正试图停下来。那是
'
,不是'
。您正在测试'
,它不是一个空格,只是一个长度为0的字符串
更好的解决方案是从输入中去掉所有空白,然后检查它是否为空字符串(例如,除了空白之外,没有其他内容)。你应该换一条线
if decimal_number == (''):
与
.strip()
方法只是删除字符串前后的空格。将break
语句放在第一个if
中,使用if not decimal\u number:
而不是检查”
,因为空字符串是错误的,因此,在布尔上下文中,它们被认为是错误的
在尝试除法之前,还要检查numberofnumbers
是否为0
number_of_numbers = 0
sum_of_numbers = 0
zero_number = 0
while number_of_numbers > -1:
decimal_number = input('Input a number: ')
if not decimal_number:
decimal_number = zero_number
## number_of_numbers = 1
break
else:
decimal_number = float(decimal_number)
number_of_numbers = number_of_numbers + 1
sum_of_numbers = sum_of_numbers + decimal_number
if number_of_numbers == 0:
print('Cannot Divide by zero!')
else:
print((sum_of_numbers + zero_number) / number_of_numbers)
我不确定当您将空格'作为输入时(您在代码中执行此操作),是否要增加数字中的数字。这就是为什么我提供了两个版本 1) 在空白处增加\u编号的\u:
number_of_numbers = 0
sum_of_numbers = 0
while True:
decimal_number = input('Input a number: ')
if decimal_number == '':
number_of_numbers += 1
break
try:
sum_of_numbers += float(decimal_number)
number_of_numbers += 1
except ValueError:
print('Wrong Input. Try Again')
continue
print(sum_of_numbers / number_of_numbers)
2) 不要在空白处增加\u数(需要检查\u数之和是否为零):
希望有帮助。这是您的实际代码吗?因为当我运行它时,我没有得到
ValueError
,我得到namererror:name'zero\u number'没有定义
。很抱歉,是的,我通过更改while循环的条件修复了该问题,并修复了该问题。新代码现在正在讨论中。感谢您的帮助,因为您重新分配了十进制数
,所以代码的可能重复将永远不会出现在break
语句中。非常感谢!我很感激
number_of_numbers = 0
sum_of_numbers = 0
while True:
decimal_number = input('Input a number: ')
if decimal_number == '':
number_of_numbers += 1
break
try:
sum_of_numbers += float(decimal_number)
number_of_numbers += 1
except ValueError:
print('Wrong Input. Try Again')
continue
print(sum_of_numbers / number_of_numbers)
number_of_numbers = 0
sum_of_numbers = 0
while True:
decimal_number = input('Input a number: ')
if decimal_number == '':
break
try:
sum_of_numbers += float(decimal_number)
number_of_numbers += 1
except ValueError:
print('Wrong Input. Try Again')
continue
if number_of_numbers == 0:
print('No values to compute Average')
else:
print(sum_of_numbers / number_of_numbers)