如何在python中有目的地导致滚动?

2024-06-02 05:32:12 发布

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

我想引起一个翻滚,比如在最初的Civ游戏中,甘地已经是最和平的了,然后玩家将最大和平主义值(255)增加了一,然后变为0(愤怒)。我想对列表或数组进行算术运算,并定义一个范围(例如0-255),如果算术后的值超出范围(负值或任何超过255的值),它将从头开始或向后。 例如:

list1 = [10,118,251,43,195] # add 150 to each value
output_list = [160,268,401,193,345] # but I want [160,13,146,193,90]

同样,如果我从每个值中减去,任何低于0的值都会从255回滚

另外,它不必是一个列表,也可以是一个数组或其他方式。目前,我编写了一个for循环来检查每个值,但这是不雅观的,只有当over/under值在该范围内小于/大于min/max值不超过2X时才有效

# My current code:
for i in range(len(list1)):
    if list1[i] > 255:
        list1[i]=list1[i] - 255
    if list1[i] < 0:
        list1[i]=list1[i] + 255

谢谢大家!


Tags: toadd游戏列表forif定义玩家
1条回答
网友
1楼 · 发布于 2024-06-02 05:32:12

您所指的“滚动”操作通常称为“模”或“余数”,因为它对应于查找欧几里得除法的余数。它有时也被称为“环绕”

例如,当我们计算一天中的小时数时,我们计算模12,因此13:00相当于01:00

模运算在python中表示为%。您可以实现一个自定义add函数,该函数考虑阈值并应用模运算符:

def add(x, y, threshold=256):
  return (x + y) % threshold

list1 = [10,118,251,43,195]
output_list = [add(x, 150) for x in list1]

print(output_list)
# [160, 12, 145, 193, 89]

相关问题 更多 >