前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >考点:程序逻辑和调试,类似环形链表结构【Python习题03】

考点:程序逻辑和调试,类似环形链表结构【Python习题03】

作者头像
刘金玉编程
发布2021-11-30 15:43:59
2970
发布2021-11-30 15:43:59
举报
文章被收录于专栏:编程创造城市编程创造城市

考点:

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

题目:

有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.需要用到循环一直不停读取,直到最后一个人。

源代码:

代码语言:javascript
复制
# -*- 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=0
curindex=0
while len(list1)>1:
    #开始报数
    count+=1
    if count==3:
        count=0
        del list1[curindex]
        curindex-=1
        print("移除报到3的人后 ",list1)

    if curindex==len(list1)-1:
        curindex=0
    else:
        curindex += 1

# print(list1)


总结部分:

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程创造城市 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档