page contents

python基础编程100例:第40期-报数

本文讲述了python基础编程100例:第40期-报数!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-03-6vJKnjBK623537c7da3b6.png

本文讲述了python基础编程100例:第40期-报数!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

第40期-报数

1 问题描述

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,

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

要求:输入围成一圈的人数n

输出最后一个人的编号


2 解题思路

第一步: 输入围成一圈的人数,input函数

第二步: 选哟注意每次出局一人总人数就会少一个,直接计算可能过于复杂,可以选择给他们特殊编号,转完一圈后再统一出局


3 解题方法

n = int(input('请输入围成一圈的人数:'))

a = []

for i in range(n):

    a.append(i + 1)


def count(a):

    i = 2

    while True:

        if len(a) == 2:

            if i == 1:

                return a[0]

            else:

                return a[1]

        a[i] = 0

        i += 3

        if i >= len(a):

            i -= len(a)

            while True:

                try:

                    a.remove(0)

                except:

                    break

print(count(a))

第1行: 使用input函数提示用户输入围成一圈的人的数量,并赋值给n

第2-4行: 定义列表a,将人数从1到n加到列表中

第7行: 定义函数count,其内变量为列表a

第8行: 定义索引变量i,因为第一个出局的玩家在列表中的索引为2,所以给i赋值为2

第10-14行: 当列表长度为2时,可能会出现减去列表长度结果仍然超出列表长度的情况,所以对列表长度为2的情况需要特别考虑

第15行: 将即将出局的人标记为0

第16行: 索引加3进行下次标记

第17-18行: 当索引大于或等于列表长度时,无法索引,需要循环到列表开头

第19行: 此时单次列表索引完毕,开始清除所有为0的玩家,无限循环,开始将0踢出列表

第20-23行: 一直删除0知道没有0可以删除,结束本次内部循环

第26行: 输出剩余的人


代码运行结果为:

attachments-2022-03-AsiwckLl623537b42668f.png


这里用到了try、except语句,简单讲解下这个语句:

try-except 语句(以及其更复杂的形式)定义了进行异常监控的一段代码,并且提供了处理异常的机制.

try 块允许您测试代码块以查找错误。

except 块允许您处理错误。 例如:


try:

  print(x)

except:

  print("An exception occurred")


由于 try 块引发错误,因此会执行 except 块。

如果没有 try 块,程序将崩溃并引发错误

此代码将会输出 An exception occurred

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-ZaZYwFXL629095901b916.jpeg

  • 发表于 2022-03-19 09:54
  • 阅读 ( 868 )
  • 分类:Python开发

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章