2

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

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)

不起作用,并且将 line 视为字符串而不是浮点数。我只做了一天python,所以它可能是一个菜鸟错误。谢谢你的帮助!

4

3 回答 3

7

float()返回一个浮点数,而不是转换它。尝试:

line = float(line)
于 2013-05-14T03:13:16.113 回答
6

float(line)不会就地转换。它返回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通过首先强制转换lineexcept处理异常来捕获异常。

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

上述两种方法中的任何一种都会导致程序更健壮。

于 2013-05-14T03:14:48.707 回答
2

float(line)根本没有改变line,所以它仍然是一个字符串。你会想line = float(line)改用。

于 2013-05-14T03:13:25.780 回答