Python:String不会转换为float

时间:2013-05-14 03:11:11

标签: python string

几个小时前我写了这个程序:

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,所以它可能是一个新手的错误。谢谢你的帮助!

3 个答案:

答案 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)代替。