打开网易新闻 查看精彩图片

考点:

程序逻辑和调试,类似环形链表结构

题目:

有n个人围成一圈,顺序排号。

从第一个人开始报数(从1到3报数),

凡报到3的人退出圈子,

问最后留下的是原来第几号的那位。

假定有10个人手牵手绕成一圈,即n=10

程序效果:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

移除报到3的人后 [1, 2, 4, 5, 6, 7, 8, 9, 10]

移除报到3的人后 [1, 2, 4, 5, 7, 8, 9, 10]

移除报到3的人后 [1, 2, 4, 5, 7, 8, 10]

移除报到3的人后 [1, 4, 5, 7, 8, 10]

移除报到3的人后 [1, 4, 5, 8, 10]

移除报到3的人后 [4, 5, 8, 10]

移除报到3的人后 [4, 5, 10]

移除报到3的人后 [4, 10]

移除报到3的人后 [4]

编写思路:

1.可以先用小的数值进行测试,让人数少点,然后看数据变化。

2.这里因为是n个人绕成一圈,所以计数的时候count的值要能够从头到尾、从尾到头都能连续计数。所以要将count设置为全局变量。

3.可以直接通过一个索引变量从list1中读取每一个数据,值得注意的是读到最后一个数据后要重置索引为0,这样可以形成环形结构读取。

4.使用if。。。else。。。语句来区分list1的索引是否读取到列表的末尾一个。

5.需要用到循环一直不停读取,直到最后一个人。

源代码:

# -*- coding: utf-8 -*-"""@File文件 : ljytest69@Time创建时间 : 2021/11/23@Author作者 : 刘金玉@Contact联系方式 : selidev@qq.com 编程创造城市 http://bcczcs.com注:作者信息请保留!否则必究法律责任!刘金玉编程,编程创造城市!作者微信号:selidev作者抖音号:selidev作者B站:刘金玉编程微信公众号:编程创造城市题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
程序分析:无。"""
n=10
list1=[i for i in range(1,n+1)]print(list1)count=0curindex=0while len(list1)>1:#开始报数count+=1if count==3:count=0del list1[curindex]curindex-=1print("移除报到3的人后 ",list1)
if curindex==len(list1)-1:curindex=0else:curindex += 1
# print(list1)


总结部分:

这道题目考查的除了一个程序要的逻辑思维以外,还重点需要结合程序的调试,考查一个人的程序调试能力,是一个较为综合性的题目。

更多Python基础操作知识,大家可以到B站/优酷/爱奇艺/好看视频/腾讯视频搜索“刘金玉”,可以找到《零基础Python教程》和《Python高级进阶教程》视频合集哦!全部免费亲情奉献!

联系作者:刘金玉

长按关注公众号

编程创造城市官网:https://bcczcs.com/