我写了一些代码来测试Josephus问题,但是我发现当我使用list和list [:]时,有两种方法可以循环它们,结果是不同的。前一种方法得到错误的结果,后一种方法得到正确的结果。但是list和list [:]都打印相同的元素和索引。
def Josef():
people=list(range(1,31))
i=1
while len(people)>15:
for j in people:#use for j in people[:] is ok
if i==9:
print('number {} off the boat'.format(j))
people.remove(j)
# print(people)
i=1
else:
i=i+1
return people
print(Josef())
我希望在i = 9时一次打印一个数字,但是除了第一次输出数字是正确的以外,剩下的整个数字都会出错。