几个小时前我写了这个程序:
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.看起来这部分代码:
float(line)
无效,将行视为字符串而不是浮点数。我只做了一天python,所以它可能是一个新手的错误。谢谢你的帮助!
答案 0 :(得分:7)
float()
返回一个浮点数,而不是转换它。尝试:
line = float(line)
答案 1 :(得分:5)
float(line)
未就地转换。它返回float
值。您需要将其分配回float变量。
float_line = float(line)
更新:实际上,更好的方法是首先检查输入是否为数字。如果它不是数字float(line)
会崩溃。所以这更好 -
float_line = None
if line.isdigit():
float_line = float(line)
else:
print 'ERROR: Input needs to be a DIGIT or FLOAT.'
请注意,您也可以通过首先强行转换ValueError
并在line
处理except
来捕获try:
float_line = float(line)
except ValueError:
float_line = None
例外来执行此操作。
{{1}}
上述两种方法中的任何一种都可以带来更强大的程序。
答案 2 :(得分:2)
float(line)
根本不会更改line
,因此它仍然是一个字符串。您需要使用line = float(line)
代替。