简体   繁体   English

Python if和elif不起作用,给出错误

[英]Python if and elif not working, giving error

I'm new in Python and doing an online tutorial. 我是Python新手,正在做在线教程。 I have an assignment that I can not accomplish. 我有一项无法完成的任务。 My problem is that when I run this code, the minimum variable stays the same to None and does not record the new value input. 我的问题是,当我运行此代码时, 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

Your problem is that your are checking if (some number) <= None You cannot compare numbers with None . 您的问题是您正在检查是否(some number) <= None您不能将数字与None进行比较。 Instead, minimum=float("inf") and maximum=float("-inf") would set minimum to infinity, and maximum to negative infinity. 相反, minimum=float("inf")maximum=float("-inf")会将最小值设置为无穷大,将最大值设置为负无穷大。 That way, the first number entered would be less than infinity, setting it to minimum , and greater than negative infinity (setting it to maximum ). 这样,输入的第一个数字将小于无穷大,将其设置为minimum ,而大于负无穷大(将其设置为maximum )。 Note that elif maximum >= num would need to be changed to if maximum >= num (to handle the first entered number). 请注意, if maximum >= numif maximum >= num需要将elif maximum >= num更改为(处理第一个输入的数字)。

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

You are comparing None and int , Python does not know how to do that. 您正在比较Noneint ,Python不知道该怎么做。 Instead, you should do: 相反,您应该执行以下操作:

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

Any int would be greater than -infinity and lower than infinity , so things will work fine. 任何int都将大于-infinity并小于infinity ,因此一切正常。 Same thing can not be said about zeroes, so don't use those. 关于零不能说相同的事情,所以不要使用那些。

Also, look up min and max builtins . 另外,查找minmax buildins

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM