难以接受练习5.2

时间:2017-08-05 23:18:05

标签: python python-3.x

尝试学习Python。几个小时都在这一个。

我要做的是输入一些数字(例如7,4,6​​,10和2)然后打印最大值和最小值。  我的代码适用于我输入的每个数字1-9。一旦我达到10或更高,它就会变得不稳定。 似乎它将10读为1,附加零,并且表示10是最小值。 我在哪里错了? 。 练习是输入几个数字然后打印最大值和最小值。我的代码适用于我输入的每个数字1-9。一旦我达到10或更高,它就会变得不稳定并将10列为最小值。   我在哪里错了?

largest = None
smallest = None
the_list = []

while True:
    num = input('Enter a number or done: ')

    #Handle the edge cases
    if num == 'done' : break
    if len(num) < 1 : break # Check for empty line

    # Do the work
    try :
        number = int(num)
        the_list.append(num)
    except:
        print("Invalid input")
        #continue

print(the_list) # NOTE: This is new so I can see what is in the_list

for value in the_list:
    if smallest is None:
        smallest = value
    elif value < smallest:
        smallest = value

for the_num in the_list:
    if largest is None:
        largest = value
    elif the_num > largest:
        largest = value #the_num

print("Maximum is", largest)
print( "Minimum is", smallest)

2 个答案:

答案 0 :(得分:1)

您实际上并未将number附加到列表中,而是将num附加到列表中(我猜是一个简单的拼写错误)。因此,您永远不会将int附加到列表中,而是str。显然,这将在以后比较字符串时产生问题,例如:

>>> '10' < '3'
True

the_list.append(num)更改为the_list.append(number)

另一个错误是,在您的第二个for循环中,您忘记将value更改为the_num

答案 1 :(得分:0)

问题是您要将字符串附加到列表中,而不是整数。也就是说,您的列表现在包含以下内容(如果您输入2然后是10:

the_list = ['2', '10']

由于字符串按字典顺序进行比较,因此&#39; 10&#39;小于&#39; 2&#39;因为&#39; 1&#39;小于&#39; 2&#39;。你想要做的是附加整数。

try :
    number = int(num)
    the_list.append(number)
except:
    print("Invalid input")
    #continue

这样,您就可以比较数字的数值,并获得正确答案!