Python初学者练习:有n个人围成一个圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

---人生苦短,我用Python---

这道题的思路是,n个人要一直循环报数,而且头尾相接,如何设置循环体是是关键点。
代码如下:

n = int(input('请输入人数:'))
li_c = list(range(1, n + 1)) # 将所有人放入一个数组
count = 0            # 设置一个变量,用于计算报数
while len(li_c) > 1:     # 当数组中至少有2个元素时进行循环
li_co = li_c[:]    # 把原数组拷贝到新数组中,用于限制内层循环次数
for i in range(0, len(li_co)): # 内层循环开始,从第一个人开始报数
count = count + 1 # 每报一次,count计数器加1

if count % 3 == 0: # 如果count能被3整除,则是报到3的人
            li_c.remove(li_co[i])  # 把报到3的人移除原数组,进行下一次循环

print('最后留下的是原来的第 {} 号。'.format(li_c[0]))

猜你喜欢

转载自www.cnblogs.com/cy80/p/9025021.html
今日推荐