我试图找到最小和最大的数字,但程序的输出不正确。最小的是输出中最大的,最大的总是小于最大的1。我输入了2,4,6,8,继续输出:
Enter a number: 2
Enter a number: 4
Enter a number: 6
Enter a number: 8
Enter a number: done
('largest is', 7)
('smallest is', 8)
以下是代码:
largest = None
smallest = None
while True:
num = raw_input("Enter a number: ")
if num == "done" : break
try:
halo = int(num)
except:
print("invalid input")
continue
for largest in range(halo):
if largest is None:
largest = halo
elif largest > halo:
largest = halo
for smallest in range(halo):
if smallest is None:
smallest = halo
elif smallest<halo:
smallest = halo
print "largest is",largest
print "smallest is",smallest
答案 0 :(得分:4)
您始终为largest
和smallest
分配值,因为您在for
循环中将它们用作目标:
for largest in range(halo):
在上文中,largest
将被分配0
,然后1
,然后2
一直到halo
的最后一个数字。< / p>
接下来,您的<
和>
比较错误;如果largest
较小,则只会更新halo
。反转你的测试。
你根本不需要任何循环,你的while True
循环就是你的循环结构。只需直接针对halo
和largest
测试smallest
:
try:
halo = int(num)
except:
print("invalid input")
continue
if largest is None or halo > largest:
largest = halo
if smallest is None or halo < smallest:
smallest = halo