Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ValueError:在Python 3中无法将字符串转换为浮点错误_Python_Python 3.x - Fatal编程技术网

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)