python错误的值<和>

时间:2016-03-25 17:43:30

标签: python floating-point

以下是我的代码计算<,>不正确。在给出raw_input大约3倍的情况下,它将执行诸如值12< 4.我添加了几个float命令,试图避免遇到string和int的问题。我对编码很新。

largest = None
smallest = None
while True:
    num = raw_input("Enter a number: ")
    if num == "done" : break
    try:
        float(num)
    except ValueError:
        print "Invalid input" 
        break
    float(num)
    if largest is None:
        largest = num
        float(largest)
    if smallest is None:
        smallest = num
        float(largest)
    if num > largest:
        largest = num
        float(largest)
    if num < smallest:
        smallest = num
        float(smallest)
    print num

print "Maximum", largest
print "Minimum", smallest

4 个答案:

答案 0 :(得分:1)

float(num)计算num的浮点值,但不任何事情;特别是,它不会改变num的值。你需要一个任务来做到这一点。

答案 1 :(得分:1)

在您当前的代码中,将num作为float投射后,您实际上 将其分配给任何内容。

float(num)

相反,您需要在转化后重新分配num

num = float(num)

如果你不这样做(就像你当前的代码一样),当你进行比较时,你正在进行字符串比较而不是数字比较。

"12" < "4"   # True

答案 2 :(得分:1)

float不会就地更改变量 - 它会返回一个强制转换值,您不会将其保存在任何位置而忽略该值。只需分配它,你就可以了:

try:
    num = float(num)
except ValueError:
    print "Invalid input" 
    break

if largest is None:
    largest = num
if smallest is None:
    smallest = num
if num > largest:
    largest = num
if num < smallest:
    smallest = num
print num

答案 3 :(得分:0)

您不会更改代码中num的值。键入“float(num)”并没有真正做任何事情,因为它只是暂时将该变量强制转换为浮点数。要实际更改值,我建议进行以下编辑。

largest = None
smallest = None
while True:
    num = raw_input("Enter a number: ")
    if num == "done" : break
    try:
        float(num)
    except ValueError:
        print "Invalid input" 
        break
    num = float(num)
    if largest is None:
        largest = num
    if smallest is None:
        smallest = num
    if num > largest:
        largest = num
    if num < smallest:
        smallest = num
    print num

print "Maximum", largest
print "Minimum", smallest