【发布时间】:2017-01-30 05:36:18
【问题描述】:
我正在编写一个小程序,它需要 4 个数字 (173,210,94,164) 并执行以下操作:
- 新集合中的第一个数字将是第一个和第二个数字之差的绝对值。 (例如
abs(173-210)->37) - 集合中的第二个数字是第二个和第三个数字之差的绝对值(例如
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))
【问题讨论】:
-
oldnums = numbers为一个列表提供两个名称 - 当您分配数字时,您也在更改 oldnums。使用oldness = numbers[:]或oldness = list(numbers)制作一个在您修改其他列表时不会被修改的副本。
标签: python list python-3.x indexing