这适用于我的在线课程,但不适用于我的IDE

时间:2019-11-20 10:21:39

标签: python-3.x

以下代码可用于在线课程,但是我在IDE中遇到错误。

代码:

from pip._vendor.distlib.compat import raw_input

largest = None
smallest = None

while True:
    try:
        num = raw_input("enter a number: ")
        if num == "done": break

        num = int(num)

        if largest < num:
            largest = num

        if smallest is None or smallest > num:
            smallest = num

    except print as p:
        print("Invalid input")

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

3 个答案:

答案 0 :(得分:3)

下面的答案很好,但我想添加说明以使所有内容都更清楚。

num = raw_input("enter a number: ")

raw_input仅存在于Python 2.x中,并且您的问题被标记为Python3.x。我认为它与您的本地python安装相匹配。

Here's a thread深入到raw_inputinput

另一个问题是这段代码:

largest = None
smallest = None
...
if largest < num:
    largest = num

您会收到一条错误消息:

TypeError: '<' not supported between instances of 'NoneType' and 'int'

您实际上是将largest设置为不存在的值(“ None”表示没有值),然后稍后将其与整数进行比较。这是不正确的,因为这种比较没有意义。

幸运的是,您实际上在接下来的代码中做了正确的事情:

if smallest is None or smallest > num:
    smallest = num

因此,您应该在两个None中检查if或将两个值都设置为0(或您认为合适的任何值。

感谢@Tibbles,我也意识到您对错误的处理不正确。现在,您会看到一条错误消息:

Traceback (most recent call last):
  File "main.py", line 17, in <module>
    except print as p:
TypeError: catching classes that do not inherit from BaseException is not allowed

那是因为print不是一种例外。

答案 1 :(得分:2)

使用input代替raw_input

此外,将变量保持为int格式:

largest = 0
smallest = 0

答案 2 :(得分:0)

这是我得到的错误

TypeError: '<' not supported between instances of 'NoneType' and 'int'

尝试将最大和最小定义为浮点数或整数,而不要定义为None