我有以下代码:
generateMin = 150
generateMax = 250
if (current_level.world_shift * -1 % n == 0
for n in range(generateMin, generateMax)):
print("in range")
以100 FPS进行检查-随我左右移动current_level.world_shift
而改变。但是,此代码不起作用。有人可以帮我吗?
您不能在这样的语句中使用生成器表达式if
。这是因为最初生成器表达式会产生一个新的生成器对象,并且通常会考虑大多数类型的实例True
(请参见文档中的真值测试)。
要执行您想要的操作,建议您改用内置any()
功能。这样做会很快,因为一旦True
遇到布尔子表达式值,它将立即停止。
这就是我的意思:
# a couple of things to allow dot syntax used in question to be used in answer
class Level: pass
current_level = Level()
current_level.world_shift = -175
generateMin = 150
generateMax = 250
if any(current_level.world_shift*-1 % n == 0
for n in range(generateMin, generateMax)):
print("in range")
any()
True
如果current_level.world_shift*-1
可以被开放范围内的任意数均分,则将返回(假设这就是您要确定的结果)。开放式的意思是说generateMax
将不考虑range(start, stop)
该值,因为它仅涵盖从start
到的值stop-1
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句