Python: String will not convert to float

匿名 (未验证) 提交于 2019-12-03 02:31:01

问题:

I wrote this program up a few hours ago:

while True:     print 'What would you like me to double?'     line = raw_input('> ')     if line == 'done':         break     else:         float(line)              #doesn't seem to work. Why?         result = line*2         print type(line)         #prints as string?         print type(result)       #prints as string?         print " Entered value times two is ", result  print 'Done! Enter to close'

As far as I can tell, it should be working fine.The issue is that when I input a value, for example 6, I receive 66 instead of 12. It seems like this portion of code:

float(line)

is not working and is treating line as a string instead of a floating point number. I've only been doing python for a day, so its probably a rookie mistake. Thanks for your help!

回答1:

float(line) does not convert in-place. It returns the float value. You need to assign it back to a float variable.

float_line = float(line)

UPDATE: Actually a better way is to first check if the input is a digit or not. In case it is not a digit float(line) would crash. So this is better -

float_line = None if line.isdigit():     float_line = float(line) else:     print 'ERROR: Input needs to be a DIGIT or FLOAT.'

Note that you can also do this by catching ValueError exception by first forcefully converting line and in except handle it.

try:     float_line = float(line) except ValueError:     float_line = None

Any of the above 2 methods would lead to a more robust program.



回答2:

float() returns a float, not converts it. Try:

line = float(line)


回答3:

float(line) doesn't change line at all, so it is still a string. You'll want to use line = float(line) instead.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!