在我的关卡编辑程序中,我有以下代码,用于删除已移出可播放区域的游戏片段:
x, y = theobj.pos
if x not in range(0,79):
level.remove_obj(theobj)
if y not in range(0,29):
level.remove_obj(theobj)
有没有什么有效的方法可以简化为单个if语句?我已经考虑使用列表推导来生成所有有效位置元组的列表,但这看起来有点臃肿。
答案 0 :(得分:3)
您可以使用:
if not (0 <= x <= 78 and 0 <= y <= 28):
level.remove_obj(theobj)
这使用chained comparisons来测试x
和y
的两个边界。
我不在这里创建range()
个对象;您正在为每个测试创建一个新对象。
演示:
>>> x, y = 10, 10
>>> (0 <= x <= 78 and 0 <= y <= 28)
True
>>> x, y = 10, 42
>>> (0 <= x <= 78 and 0 <= y <= 28)
False
>>> x, y = 81, 10
>>> (0 <= x <= 78 and 0 <= y <= 28)
False