python基础练习--报数报到3的退出

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

 

 

 

 

  1 # -*- coding:utf-8 -*-
  2 
  3 if __name__ =='__main__':
  4     nmax=50
  5     n = input('请输入总人数:')
  6     num=[]
  7     for i in range(n):
  8         num.append(i+1)
  9 
 10     j = 0#用于列表的下标
 11     k = 0#统计是否为3
 12     m = 0#用于循环记数,数三个数字记一次
 13 
 14     while m<n-1:
 15         if num[j]!=0:
 16             k+=1
 17         if k==3:#数到3则变0,并且将k初始化,重新计数
 18             num[j]=0
 19             k = 0
 20             m+=1
 21         j+=1
 22         if j ==n:  #m是数三次记一次,但是j数一次就+1,j将超出列表循环,所以要置0从头开始
 23             j = 0  #(j==n也刚好在列表末尾)
 24 
 25     #将最后剩下的数字输出
 26     n=0
 27     while num[n]==0:
 28         n+=1
 29         if num[n]!=0:
 30             print num[n]
 31             print '剩下的是原来的第%d位'%(n+1)


结果为:

 

 

请输入总人数:3
2
剩下的是原来的第2位

请输入总人数:10
4
剩下的是原来的第4位

备注:本题目的重点在于m与j之间的关系(m是循环三次加一,而j则是循环一次就加一)

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值