如何找到在给定范围内可被数整除的数?

2024-10-01 00:16:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个代码:

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

它以每秒100帧的速度被检查-当我向右/向左移动时current_level.world_shift发生了变化。但是这个代码不起作用。有人能帮我吗?在


Tags: 代码inforworldifshiftrangecurrent
2条回答

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

我建议您使用内置的^{}函数。这样做会很快,因为一旦遇到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()可以被开放范围内的任意数整除,则any()将返回{}(假设这就是您要确定的)。我的意思是,值generateMax将不考虑,因为range(start, stop)只包含从start到{}的值。在

我想你误解了range()方法。它不创建随机数,而是在特定范围内创建一个数字列表。E、 g.,range(1,5)产生{}

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之前赋值,或者根本不赋值,就像上面的代码一样。在

相关问题 更多 >