我正在尝试编写一个小程序来计算用户的数字。还有一些条件可以检查数字是正数还是用户只是输入。出于某种原因,我无法将数据变量转换为浮点数。
错误发生在第5行,我得到错误“ValueError:无法将字符串转换为浮点数:”我现在尝试了很多组合,并尝试搜索StackOverflow以获得答案,但没有任何运气。
如何将输入转换为浮点数?在此先感谢您的帮助!
sum = 0.0
while True:
data = float(input('Enter a number or just enter to quit: '))
if data < 0:
print("Sorry, no negative numbers!")
continue
elif data == "":
break
number = data
sum += data
print("The sum is", sum)
答案 0 :(得分:1)
您可以改为写入:
,而不是让用户按Enter键退出sum = 0.0
while True:
data = float(input('Enter a number or "QUIT" to quit: '))
if data.upper() != "QUIT":
if data < 0:
print("Sorry, no negative numbers!")
continue
elif data == "":
break
number = data
sum += data
print("The sum is", sum)
答案 1 :(得分:0)
您无法将空字符串转换为浮点数。
获取用户的输入,检查其是否为空,如果不是,则然后将其转换为浮动。
答案 2 :(得分:0)
在使用这种方式转换为float之前,您可以检查数据是否为空:
sum = 0.0
while True:
data = input('Enter a number or just enter to quit: ')
if data != "":
data = float(data);
if data < 0:
print("Sorry, no negative numbers!")
continue
number = data
sum += data
print("The sum is", sum)
else:
print("impossible because data is empty")
答案 3 :(得分:0)
您必须首先检查空字符串,然后将其转换为float
。
此外,您可能希望捕获格式错误的用户输入。
sum = 0.0
while True:
answer = input('Enter a number or just enter to quit: ')
if not answer: # break if string was empty
break
else:
try:
number = float(data)
except ValueError: # Catch the error if user input is not a number
print('Could not read number')
continue
if number < 0:
print('Sorry, no negative numbers!')
continue
sum += data
print('The sum is', sum)
在python中,像''
这样的空白内容比较False
,在与if not <variable>
或if <variable>
的比较中使用它是惯用的。
这也适用于空列表:
>>> not []
True
适用于None
>>> not None
True
几乎所有其他可以描述为空或未定义的内容如None
: