如何在python中故意导致滚动?

6yoyoihd  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(320)

我想引起一个翻滚,比如在最初的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回滚。
p、 它不必是一个列表,也可以是一个数组或其他方式。目前,我编写了一个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

非常感谢。

zyfwsgd6

zyfwsgd61#

您所指的“滚动”操作通常称为“模”或“余数”,因为它对应于查找欧几里得除法的余数。它有时也被称为“环绕”。
例如,当我们计算一天中的小时数时,我们计算模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]

相关问题