Python if和elif不工作,给出错误

时间:2016-08-27 21:00:22

标签: python python-2.7 if-statement

我是Python的新手并且正在进行在线教程。我有一项我无法完成的任务。我的问题是,当我运行此代码时,minimum变量保持与None相同,并且不记录新值输入。

maximum = None
minimum = None
while True:
    try:
        num2 = raw_input('Type here ')
        if num2 == 'done':break
        else:
            num = int(num2)
            if num <= minimum:
                minimum = num
                print minimum
            elif num >= maximum:
                maximum = num
                print maximum


    except:
        print 'Invalid Entry'


print 'Maximum is %d' % maximum
print 'Minimum is %d' % minimum

3 个答案:

答案 0 :(得分:0)

您的问题是,您正在检查(some number) <= None您是否无法将数字与None进行比较。相反,minimum=float("inf")maximum=float("-inf")会将最小值设置为无穷大,最大值设置为负无穷大。这样,输入的第一个数字将小于无穷大,将其设置为minimum,并且大于负无穷大(将其设置为maximum)。请注意,elif maximum >= num需要更改为if maximum >= num(以处理第一个输入的数字)。

答案 1 :(得分:0)

import sys
maximum = None
minimum = sys.maxsize
while True:
    try:
        num2 = raw_input('Type here ')
        if num2 == 'done':break
        else:
            num = int(num2)
            minimum = min(minimum, num)
            maximum = max(maximum, num)
    except:
        print 'Invalid Entry'


if maximum is None:
    minimum = None

print 'Maximum is %d' % maximum
print 'Minimum is %d' % minimum

答案 2 :(得分:0)

您正在比较Noneint,Python不知道如何做到这一点。 相反,你应该这样做:

maximum = float('-inf')
minimum = float('inf')

任何int都会大于-infinity且低于infinity,所以一切正常。关于零也不能说同样的事情,所以不要使用那些。

另外,请查看minmax builtins