![](/img/trans.png)
[英]Sum of all numbers in range from 0 to a given number that are divisible with 7
[英]how to find number that's divisible by a number in a given range?
我有以下代码:
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
发生了变化。 但是,此代码不起作用。 有人可以帮我吗?
我认为您误会了range()
方法。 它不会创建随机数,而是会创建特定范围内的数字列表。 例如, range(1,5)
产生[1,2,3,4]
import random
generateMin = 150
generateMax = 250
if (current_level.world_shift * -1 % random.randint(generateMin, generateMax) == 0):
print("in range")
我认为您正在尝试在条件中进行赋值,例如if (n == 1 with n = 1)
,但是错误地使用了列表理解,最终将其验证为True
。 我很惊讶没有给出语法错误。
Python不支持条件内的赋值,您需要在if之前赋值,或者根本不需要赋值,就像上面的代码一样。
您不能在类似的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")
如果current_level.world_shift*-1
被开放式范围内的任意数均分,则any()
将返回True
(假设这就是您要确定的)。 开放式是指不会考虑值generateMax
因为range(start, stop)
仅覆盖从start
到stop-1
的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.