gpt4 book ai didi

python - 将范围值转换为整数

转载 作者:行者123 更新时间:2023-11-30 22:37:37 25 4
gpt4 key购买 nike

我正在 pygame 中开发一款游戏,敌方船只将从屏幕外开始,然后在 Y 轴上垂直向玩家移动。

但是,我在访问敌人的位置时遇到了一些麻烦,因为它都与范围有关。我不太确定如何解释它,但这是我对敌人类别的了解:

class EnemyActive(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
enemy_img_list = ['enemyshipone.png', 'enemyshiptwo.png',
'enemyshipthree.png','enemyshipfour.png']
enemy_img = random.choice(enemy_img_list)
self.image = pygame.image.load(enemy_img)
self.rect = self.image.get_rect()
self.rect.x = random.randrange(0,400)
self.rect.y = random.randrange(-200,-10)
self.speed = random.randrange(1,3)

def update(self):
self.rect.y += self.speed

def getCoord(self):
return (self.rect.x, self.rect.y)

因此,当我尝试使用另一个接受 (x,y) 坐标的函数访问该位置时:

particle_list = particles.create_particles(particle_list,enemy.getCoord())

它返回一个错误,指出:

数字 = 范围(-5, -1) + 范围(1, 5)

类型错误:+ 不支持的操作数类型:“范围”和“范围”

我不会撒谎说我完全理解这个错误,但我确实看到了其推理背后的逻辑。我怎样才能真正让我的“getCoord”函数发送适当的坐标?

最佳答案

在 python 3 中,range 是一个惰性序列,而不是列表。也就是说,当需要时,它像生成器(惰性)一样一次生成一个值,而不是一次将它们全部存储在内存中(eageR)。

您无法将范围添加在一起,因为它们没有定义 + 的方法。 list 的作用是:它连接起来。

我们可以通过调用列表类将范围转换为列表。即 list(range(1, 5))

您可以构造两个列表,然后用 + 连接它们,也可以将生成器链接在一起,然后创建一个列表。这被认为是更好的样式,因为它避免了创建中间列表。

例如:

from itertools import chain
my_list = list(chain(range(-5, -1), range(1, 5)))

关于python - 将范围值转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com