循环打印最小的数字作为最大数字

时间:2016-06-14 09:34:01

标签: python

我试图找到最小和最大的数字,但程序的输出不正确。最小的是输出中最大的,最大的总是小于最大的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

1 个答案:

答案 0 :(得分:4)

您始终为largestsmallest分配值,因为您在for循环中将它们用作目标:

for largest in range(halo):

在上文中,largest将被分配0,然后1,然后2一直到halo的最后一个数字。< / p>

接下来,您的<>比较错误;如果largest 较小,则只会更新halo。反转你的测试。

你根本不需要任何循环,你的while True循环就是你的循环结构。只需直接针对halolargest测试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