微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python中故意导致翻转?

如何解决如何在python中故意导致翻转?

我想引起翻转,例如在原始文明游戏中,甘地已经是最和平的,然后玩家将最大和平主义值 (255) 增加 1 并变为 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,90]

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

附言它不一定是一个列表,它也可以是一个数组或其他一些方法。目前,我编写了一个 for 循环来检查每个值,但它不够优雅,并且仅在超出/低于该范围内的最小值/最大值小于/大于 2 倍时才有效。

# 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

谢谢!

解决方法

您所指的这种“翻转”运算通常称为“模”或“余数”,因为它对应于找到欧几里得除法的余数。有时也称为“环绕”。

例如,当我们计算一天中的小时数时,我们计算模 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]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?