以下代码可用于在线课程,但是我在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)
答案 0 :(得分:3)
下面的答案很好,但我想添加说明以使所有内容都更清楚。
num = raw_input("enter a number: ")
raw_input仅存在于Python 2.x中,并且您的问题被标记为Python3.x。我认为它与您的本地python安装相匹配。
Here's a thread深入到raw_input
和input
。
另一个问题是这段代码:
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
。