gpt4 book ai didi

Python 3 - 我是否正确使用了索引?

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

我正在编写一个小程序,它需要 4 个数字 (173,210,94,164) 并执行以下操作:

  1. 新集合中的第一个数字将是第一个数字和第二个数字之间的差值的绝对值。 (例如abs(173-210) -> 37)
  2. 集合中的第二个数字是第二个和第三个数字之差的绝对值(例如 abs(210-94) -> 116),依此类推,最后循环第一个和第四个数字。

对于这些数字,第二组应该类似于 (37, 116, 70, 9) 但当我运行代码时,我得到 (37, 116, 70, 127) 。是什么让最后一个数字是 127 而不是 9

numbers = [173, 210, 94, 164]
counter = 0
while numbers != [0, 0, 0, 0]:
oldnums = numbers
numbers[0] = abs(oldnums[0] - oldnums[1])
numbers[1] = abs(oldnums[1] - oldnums[2])
numbers[2] = abs(oldnums[2] - oldnums[3])
numbers[3] = abs(oldnums[3] - oldnums[0])
print(numbers)
counter += 1
print('Number of iterations to (0,0,0,0): ' + str(counter))

最佳答案

问题是您再次使用已经更新的值。 oldnumbers = Numbers 不会进行复制,因此当您计算最后一个值时:numbers[3] = abs(oldnums[3] - oldnums[0]) 您使用新的 numbers[0] (与 oldnums[0] 相同)值 - 这不是您想要的。

但是您根本不需要复制该列表。 Python可以进行解包:

numbers = [173, 210, 94, 164]
counter = 0
while numbers != [0, 0, 0, 0]:
numbers[:] = (abs(numbers[0] - numbers[1]),
abs(numbers[1] - numbers[2]),
abs(numbers[2] - numbers[3]),
abs(numbers[3] - numbers[0]))
print(numbers)
counter += 1
print('Number of iterations to (0,0,0,0): ' + str(counter))

关于Python 3 - 我是否正确使用了索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41929585/

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