gpt4 book ai didi

Python 3.3.4。如何交换数组中的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:04 24 4
gpt4 key购买 nike

好的,所以我今天参加了 GCSE 计算机科学考试,但我无法完成最后一题,因为我觉得这太难了。我不记得问题的确切措辞,但我记得它问的是什么。所以,有一个 6 人的数组,然后用户可以输入每个玩家要移动的位置。然后我必须创建一个算法,在每次移动后更新每个人在数组中的位置。问题是这些人围坐在一张 table 旁,他们的座位编号为 1-6,所以如果他们都移动了 2 个空格,那么第六个人将坐在 2 号座位上,当然他们在阵列中排在第二位。因为这个问题一直困扰着我,所以我回家看看是否可以使用 Python 创建一个算法。

这是我想出的:

array = ["susan", "mary", "david", "tom", "richard", "mark"]

places_moved = int(input("How many places would you like to move?"))

for i in range (0,6):
if i + places_moved > 5:
array[i] = (array[i + places_moved - 6])
print (array[i])
else:
array[i] = (array[i + places_moved])
print (array[i])

如您所见,这实际上根本没有更新数组,因为这只是我的第一种方法,看看我是否可以让它打印出新的数组值。然而,我什至没能成功,因为代码只改变了正在打印的数组,并没有改变数组数据的位置。

这有点难以解释,所以我对答案持怀疑态度,但如果我真的有任何意义,如果有人能给我一个针对所给问题的工作算法,我将不胜感激。谢谢伙计们/姑娘们!

最佳答案

这是一个解决方案。唯一的“技巧”是使用模运算符将席位限制为 0...5。此外,该公式加 6 以避免生成负座位号。

def main():
array = ["susan", "mary", "david", "tom", "richard", "mark"]

places_moved = int(input("How many places would you like to move?\n" + \
"(positive is to the right) "))

new_list = []
for seat in range(6):
new_list.append(array[(seat + 6 - places_moved) % 6])

print new_list

return 0

if __name__ == '__main__':
main()

(只是一个观察:在这种情况下数组不是数组而是列表)在此之后,您可以将 new_list 分配给数组,如果您愿意的话:

array = copy.deepcopy(new_list)

而且,对于不想使用额外变量(甚至模数!)的纯粹主义者而言:)

def main():
array = ["susan", "mary", "david", "tom", "richard", "mark"]

places_moved = int(input("How many places would you like to move?\n" + \
"(positive is to the right) "))

if places_moved >= 0:
for move in range(places_moved):
array = [array[-1]] + array[0:-1]
else:
for move in range(abs(places_moved)):
array = array[1:] + [array[0]]

print array

return 0

if __name__ == '__main__':
main()

关于Python 3.3.4。如何交换数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30624024/

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