Python:字符串不会转换为浮点数 [英] Python: String will not convert to float
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'
据我所知，它应该工作正常.问题是当我输入一个值时，例如 6，我收到 66 而不是 12.这部分代码似乎是:
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:
不起作用，将 line 视为字符串而不是浮点数.我只做了一天python，所以它可能是一个菜鸟错误.感谢您的帮助！
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!
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)
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
以上 2 种方法中的任何一种都会导致程序更健壮.
Any of the above 2 methods would lead to a more robust program.