本文讲述了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行: 输出剩余的人
代码运行结果为:
这里用到了try、except语句,简单讲解下这个语句:
try-except 语句(以及其更复杂的形式)定义了进行异常监控的一段代码,并且提供了处理异常的机制.
try 块允许您测试代码块以查找错误。
except 块允许您处理错误。 例如:
try:
print(x)
except:
print("An exception occurred")
由于 try 块引发错误,因此会执行 except 块。
如果没有 try 块,程序将崩溃并引发错误
此代码将会输出 An exception occurred
更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。
想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!