Python 为什么代码只适用于前三次迭代?
请您帮助解释为什么代码只在前三次迭代中给出正确的最小和最大输出 我的前三个迭代的输出工作正常。最小和最大变量被锁定到这些值,并且不会根据新输入进行更新。 其余的计算(总和、计数和平均数)工作正常Python 为什么代码只适用于前三次迭代?,python,Python,请您帮助解释为什么代码只在前三次迭代中给出正确的最小和最大输出 我的前三个迭代的输出工作正常。最小和最大变量被锁定到这些值,并且不会根据新输入进行更新。 其余的计算(总和、计数和平均数)工作正常 [enter image description here][1] count= 0 sum=0 average=0 minimal=None maximum=None while True: number=raw_input("Enter a number: ") try:
[enter image description here][1]
count= 0
sum=0
average=0
minimal=None
maximum=None
while True:
number=raw_input("Enter a number: ")
try:
if (number=='done'):
break
else:
count=count+1
sum=sum+float(number)
if minimal==None:
minimal=float(number)
maximum=float(number)
else:
minimal=min(number,minimal)
maximum=max(number,maximum)
print maximum
print minimal
average=sum/count
#print ("Calc done")
except:
print ("Invalid input")
print("Count: %d, Sum=%d and Average=%d" %(count,sum,average))
print("smallest number is %d" %minimal)
print("largest number is %0.2f" %float(maximum))
下面的代码起作用。请看区别:
count= 0
sum=0
average=0
minimal=None
maximum=None
while True:
number=raw_input("Enter a number: ")
try:
if (number=='done'):
break
else:
count=count+1
sum=sum+float(number)
if minimal==None:
minimal=float(number)
maximum=float(number)
else:
minimal=min(float(number),minimal)
maximum=max(float(number),maximum)
print maximum
print minimal
average=sum/count
#print ("Calc done")
except:
print ("Invalid input")
print("Count: %d, Sum=%d and Average=%d" %(count,sum,average))
print("smallest number is %d" %minimal)
print("largest number is %0.2f" %float(maximum))
在函数调用
min(number,minimal)
和max(number,maximum)
时,您没有将number
强制转换为浮点数。必须这样做,因为最小值
和最大值
是浮动类型
尝试将参数number
替换为float(number)
,如下所示:
minimal=min(float(number),minimal)
maximum=max(float(number),maximum)
您忘记在
min(number,minimal)
中将number
强制转换为浮点。使用max
的行也存在同样的问题。您没有在else
块中将数字键入到float
。通常最好快速解释差异。感谢您的回复。这就解决了问题。我考虑过这一点,所以在if条件中添加了类型转换,并假设“如果”块总是在else块之前实现,那么“最小”和“最大”将被转换为float。我仍然不明白为什么它在前几次迭代中有效(我的意思是在else块中没有float(number))。