关于#python#的问题 循环列表 狐狸抓兔问题求解!

我是高中生,学的python,求各位帮助解决,您们的每次解决都是对我们学业的帮助,万分感谢。三个空格应该填什么代码?求解释一下,谢谢。

img

代码没问题,但确实效率不高。嵌套循环本不需要的,但既然题目这么写了,那就只能这样补全代码:

hole = []
n = 10
m = 1000
for i in range(n-1):
    hole.append([0,i+1])
hole.append([0,n])  # 将最后一个洞添加进列表

head = 0
k = head
hole[0][0]=1
for i in range(1,m):
    for j in range(1,i+2):
        k = (k+1)%n  # 从上次查询的洞开始,依次跳过一个洞,跳过的次数等于当次查询的次数
    hole[k][0]=1

for i in range(len(hole)):
    if hole[i][0] == 0:
        print("兔子可能躲在第" + str(hole[i][1]) + "号洞")  # 将结果转成字符串输出

这题目给出的代码是不是有问题啊,hole列表的长度不是应该是10吗?试了一下写成下面这样是可以得到2、4、7、9,但和给出的代码不完全对不上。

hole = []
n = 10  # 洞的数量
m = 1000  # 寻找次数
# 构造一个循环链表,并给n个洞编号,设置洞的初始标志为0
# 链表的节点样式为:[洞的标志,洞的编号]
for i in range(n):
    hole.append([0, i + 1])
# print(hole)
# [[0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10]]

# 狐狸开始找兔子,将进入过的洞标志改为1,寻找m次结束
head = 0
k = head
hole[0][0] = 1  # 第一次寻找,1号洞,设置标志为1
for i in range(1, m):  # 第i+1次寻找
    """
    第2次寻找:i-->1 洞的索引-->2-->3号洞
    第3次寻找:i-->2 洞的索引-->5-->6号洞
    第4次寻找:i-->3 洞的索引-->9-->10号洞
    第5次寻找:i-->4 洞的索引-->4-->5号洞
    第6次寻找:i-->5 洞的索引-->0-->1号洞
    第7次寻找:i-->6 洞的索引-->7-->8号洞
    第8次寻找:i-->7 洞的索引-->5-->6号洞
    第9次寻找:i-->8 洞的索引-->4-->5号洞
    第10次寻找:i-->9 洞的索引-->4-->5号洞
    """
    for j in range(1, i + 2):
        if j == i+1:
            k += (j % m) % n
            k %= n
    # 将进入的索引为k的洞的标志设置为1
    hole[k][0] = 1
    # print(k)
# print(hole)
# 输出标志仍为0的洞,即兔子可能藏身地点
for i in range(len(hole)):
    if hole[i][0] == 0:
        print("兔子可能躲在第" + str(hole[i][1]) + "号洞")