python值不正确<;及>;
以下是我计算错误的代码。大约3倍于原始输入,它将执行值12<4之类的操作。我添加了几个float命令,试图避免它在string和int方面出现问题。我对编码非常陌生python值不正确<;及>;,python,floating-point,Python,Floating Point,以下是我计算错误的代码。大约3倍于原始输入,它将执行值12最大值: 最大=num 浮动(最大) 如果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
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
max=None
最小=无
尽管如此:
num=原始输入(“输入一个数字:”)
如果num==“完成”:中断
尝试:
浮点(num)
除值错误外:
打印“无效输入”
打破
浮点(num)
如果最大值为无:
最大=num
浮动(最大)
如果最小值为无:
最小=num
浮动(最大)
如果num>最大值:
最大=num
浮动(最大)
如果num<最小值:
最小=num
浮动(最小)
打印数
打印“最大”,最大
打印最小值
float(num)
计算num
的浮点值,但不处理它;特别是,它不会更改num
的值。您需要一个赋值来完成此操作。在当前代码中,在将num
转换为float
后,您实际上从未将其赋值给任何对象
float(num)
相反,您需要在转换后重新分配num
num = float(num)
如果不这样做(如在当前代码中),那么在执行比较时,您是在进行字符串比较,而不是数字比较
"12" < "4" # True
“12”<“4”#正确
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
试试看:
num=浮点(num)
除值错误外:
打印“无效输入”
打破
如果最大值为无:
最大=num
如果最小值为无:
最小=num
如果num>最大值:
最大=num
如果num<最小值:
最小=num
打印数
您不会更改代码中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
max=None
最小=无
尽管如此:
num=原始输入(“输入一个数字:”)
如果num==“完成”:中断
尝试:
浮点(num)
除值错误外:
打印“无效输入”
打破
num=浮点(num)
如果最大值为无:
最大=num
如果最小值为无:
最小=num
如果num>最大值:
最大=num
如果num<最小值:
最小=num
打印数
打印“最大”,最大
打印最小值
什么是“做像值12<4这样的事情”呢?你不是在比较12<4
;您也在比较“12”<“4”
,只是说浮点(最小)
不会改变最小的。您需要执行最小=浮点(最小)
@zondo是正确的。在您的情况下,如果您只是将try块修改为try:num=float(num)
,那么我认为您不必进行任何其他更改。只是您可以删除所有的float()调用。我认为您需要删除对float的初始转换,以便删除对答案的下一票,因为用户正在使用字符串“done”的输入。不过这是我最疯狂的猜测@是的!我才意识到。感谢您指出这一点。@Cyr1lfiggus如果Suever回答了您的问题,请将他们的答案标记为已接受(绿色支票)。非常感谢您的快速反馈!!