以下是我的代码计算<,>不正确。在给出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
答案 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