打印出输入的最大和最小数量

时间:2015-06-22 01:56:31

标签: python

我要求编写一个程序,其中包含一堆数字并打印出它们的最大和最小数量,下面是我的代码:

maximum = None
minimum = None
while True:
    num = raw_input("Enter a number: ")
    if num == 'done':
        break;
    try:
        num = int(num)
        if num >= maximum:
            maximum = num
        if num <= minimum:
            minimum = num
    except:
        print "Please Enter A Number!"
        continue
print "Max = ",maximum, "Min = ",minimum   

事情就是当我运行这个程序时,Min总是等于它的初始值None,但如果我将第二个if语句更改为else,它将起作用。现在的错误是什么?

3 个答案:

答案 0 :(得分:1)

如果问题中的缩进是正确的(而不是某些复制粘贴错误,那就是问题,minimum = num行需要向右缩进。此外,您需要注意最大值和最小值是None,当与Python 3.x中的int进行比较时会抛出错误,并且在Python 2.x中无法正常工作,因为没有int会小于None。

maximum = None
minimum = None
while True:
    num = raw_input("Enter a number: ")
    if num == 'done':
        break;
    try:
        num = int(num)
        if maximum is None:
            maximum = num
            minimum = num
        if num >= maximum:
            maximum = num
        if num <= minimum:
            minimum = num
    except:
        print "Please Enter A Number!"
        continue
print "Max = ",maximum, "Min = ",minimum  

答案 1 :(得分:1)

这里的问题是你在这里使用None作为默认值。它恰好起作用,因为所有数字都大于None。但是,这样的最低条件永远不会成真

有几种方法可以解决这个问题。明显的非pythonic方式是将最小值设置为float('inf')。这显然是无限的。 “更好”的方式是将条件改为:

if num <= minimum or minimum==None:

将在第一次传递时自动设置min。

P.S。:我猜你正在为算法练习这样做,因为min()max()函数都是内置的。

答案 2 :(得分:1)

我将如何做到这一点:

track = []
while True:
    num = raw_input("Enter a number: ")
    if num == 'done':
        break
    try:
        num = int(num)
    except ValueError:
        print "Please Enter A Number!"
        continue
    track.append(num)

print "Max = ", max(track), "Min = ", min(track)