Python 如何找到';s可被给定范围内的一个数整除?

Python 如何找到';s可被给定范围内的一个数整除?,python,python-3.x,pygame,Python,Python 3.x,Pygame,我有以下代码: generateMin = 150 generateMax = 250 if (current_level.world_shift * -1 % n == 0 for n in range(generateMin, generateMax)): print("in range") 当我向右/向左移动时,以100 FPS的速度检查当前水平。世界水平移动改变。但是,此代码不起作用。有人能帮我吗?我想你误解了range()方法。它不会创建一个随机数,而是创建一

我有以下代码:

generateMin = 150
generateMax = 250
if (current_level.world_shift * -1 % n == 0
        for n in range(generateMin, generateMax)):
    print("in range")

当我向右/向左移动时,以100 FPS的速度检查当前水平。世界水平移动改变。但是,此代码不起作用。有人能帮我吗?

我想你误解了
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,n=1)
,但错误地使用了列表理解,它总是被验证为
True
。我有点惊讶没有给出语法错误


Python不支持在条件中赋值,您需要在if之前赋值,或者根本不赋值,就像上面的代码一样。

我认为您误解了
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,n=1)
,但错误地使用了列表理解,它总是被验证为
True
。我有点惊讶没有给出语法错误

Python不支持在条件中赋值,您需要在if之前赋值,或者根本不赋值,就像上面的代码一样。

您不能在
if
语句中使用这样的赋值。这是因为最初生成器表达式生成一个新的生成器对象,大多数类型的实例通常被认为是
True
(请参见文档中的)

要执行您想要的操作,我建议您使用内置函数。这样做会很快,因为一旦遇到
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
如果
当前级别。world\u shift*-1
可被开放范围内的任何数字平均整除(假设您正试图确定)。所谓开放式,我的意思是不考虑值
generateMax
,因为
range(start,stop)
只包括
start
stop-1

这样的语句中不能使用a。这是因为最初生成器表达式生成一个新的生成器对象,大多数类型的实例通常被认为是
True
(请参见文档中的)

要执行您想要的操作,我建议您使用内置函数。这样做会很快,因为一旦遇到
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
如果
当前级别。world\u shift*-1
可被开放范围内的任何数字平均整除(假设您正试图确定)。所谓开放式,我的意思是不考虑值
generateMax
,因为
范围(开始,停止)
仅涵盖从
start
stop-1
“不工作”的值?它没有做或没有做什么?
current\u level.world\u shift
它总是返回负数,这就是为什么我用-1乘以它,基本上,如果我向右移动
current\u level.world\u shift
每次我按向右箭头键时增加+2,如果我按向左箭头键,它减少-2,我需要得到随机位置,在最小值和最大值之间,如果
范围(generateMin,generateMax)
可除以
当前\u级别。世界\u shift
,现在为0-4000,则每次
当前\u级别时,它都返回“范围内”。世界\u shift
更改为“不工作”?它没有做或没有做什么?
current\u level.world\u shift
它总是返回负数,这就是为什么我用-1乘以它,基本上,如果我向右移动
current\u level.world\u shift
每次我按向右箭头键时增加+2,如果我按向左箭头键,它减少-2,我需要得到随机位置,在最小值和最大值之间,如果
range(generateMin,generateMax)
可被
当前值除以。world\u shift
,现在为0-4000,则每次
当前值时,它都返回“范围内”。world\u shift
changeswiw,
range(1,5)
在Python 2中产生
[1,2,3,4]
FWIW,
range(1,5)
在Python2中生成
[1,2,3,4]
(或者Python3中生成这些值的迭代器)。