python - Python中关于None的条件语句
问题描述
PFB 程序。在那里我们有一个条件块if curr > max_v or max_v == None:
。这是一个错误
TypeError: '>' not supported between instances of 'int' and 'NoneType'
但是,如果我将条件更改为max_v == None or curr > max_v:
它可以正常工作。这里有什么问题。请指教。
arr_ele = []
for arr_i in range(6):
arr_t = [int(arr_temp) for arr_temp in input().strip().split()]
arr_ele.append(arr_t)
length = len(arr_ele[0])
max_v = None
curr = 0
for i in range(length-2):
for j in range(length-2):
curr = arr_ele[i][j] + arr_ele[i][j+1] + arr_ele[i][j+2] + \
arr_ele[i+1][j+1] + \
arr_ele[i+2][j] + arr_ele[i+2][j+1] + arr_ele[i+2][j+2]
if curr > max_v or max_v == None:
max_v = curr
print(max_v)
解决方案
当 Python 处理这样的逻辑表达式时,它会从左到右计算表达式。
在curr > max_v or max_v == None
中,当解释器处理 时curr > max_v
,如果变量max_v
自定义以来没有改变其值(None),它将尝试比较 anint
和 a NoneType
,并且该操作未被定义/允许。
在语句中max_v == None or curr > max_v
,如果max_v
不是整数,解释器将永远不会计算curr > max_v
。
一个解决方案是使用类似的东西:
import math
max_v = math.nan # Not a number
...
curr > max_v or max_v == math.nan:
...
顺便说一句,max_v == None
被认为是反模式。
推荐阅读
- graphviz - Graphviz Java,使图形对称并指定边长
- github - Github GrapQL API 仅返回每个上下文的最后一个 StatusContext
- json - 我得到这个错误我得到这个错误“字节类型的对象不是JSON可序列化的”,同时测试我的reverse_backdoor aganist我的真实计算机
- bootstrap-5 - Bootstrap 5 文件上传显示不正确
- json - AWS Codepipeline webhook 的正确发布请求正文是什么?
- jquery - jQuery UI resizable - 如何计算rails6中的resize像素差异
- python - 创建一个新的数据框,计算另一个数据框中两个日期之间的所有日期
- xamarin - 错误 - TextDecoration 删除线在 iOS 上不起作用
- javascript - 我在heroku上部署了电报机器人,但它不起作用
- html - Markdown 和 HTML 支持 - aws-samples/aws-lex-web-ui