如何在PY4E中修复“ int”和“ NoneType”实例之间不支持“ TypeError:'>'”

时间:2019-05-14 22:45:50

标签: python python-3.x

我正在执行py4e分配5.2。在浏览器中,当我键入我的代码时,一切正常,但是当我尝试使用CMD时,代码无法正常工作并给出错误:“ int”和“ NoneType”的实例之间不支持TypeError:'>'

largest = None
smallest = None
while True:
    sval = input("enter a number ")
    if sval=="done":
        break
    try:
        fval = int(sval)
    except:
        print("Invalid input")
        continue
    if fval > largest:
        largest = fval
    elif smallest is None:
        smallest = fval
    elif fval < smallest :
        smallest = fval


print("Maximum is",largest)
print("Minimum is ",smallest)
it is giving error Traceback (most recent call last):
  File "hw_ch_5_2.py", line 12, in <module>
    if fval > largest:
TypeError: '>' not supported between instances of 'int' and 'NoneType'

2 个答案:

答案 0 :(得分:2)

正如@JaredSmith在他们的评论中所说,您将largest设置为None的{​​{1}}。您可以在开始时将NoneType设置为很小的值(有些较大的负数),并将largest设置为很大的值。

作为示例,您可以执行以下操作,而不是将其设置为smallest

None

您还需要稍微更改代码

largest = -10000000000
smallest = 10000000000

当您知道数字范围在-10000000000和10000000000之间时,这是一种方法。

答案 1 :(得分:0)

另一种确保不将intNone进行比较(这会导致您的TypeError)的方法是检查largest或{{ 1}}是smallest 之前,您可以进行其他任何比较。

None

这是一个布尔逻辑函数,称为short-circuiting。简而言之,由于表达式(if largest is None or fval > largest: largest = fval if smallest is None or fval < smallest: smallest = fval 的第一部分如果要检查的变量为largest is None则返回True,因此解释器无需费心尝试计算第二部分(Nonefval > largest),因为整个表达式的计算结果为fval < smallest