今天的這道題,還是有一些難度的,我們先來看一下題目。

小黃人.jpg
有n個人圍成一圈,順序排號。從第一個人開始報數(shù)(從1到3報數(shù)),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。
看完之后,是不是有種瞬間蒙圈的趕腳?
其實這道題考察的主要是Python當(dāng)中的一個叫做pop()的函數(shù),而這個函數(shù)也是在上一個實例當(dāng)中使用到過的一個函數(shù),明白了這個函數(shù)的用法之后,就能夠比較輕松的將這道題目解答出來。
pop()函數(shù)的主要作用可以詳見下圖:

image.png
下面我們來看一下代碼:
# 有n個人圍成一圈,順序排號。從第一個人開始報數(shù)(從1到3報數(shù)),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。
n = int(input("請輸入人數(shù):"))
list = [] # 創(chuàng)建一個空列表
count = 0 #創(chuàng)建一個計數(shù)的值
for i in range(1,n+1): #創(chuàng)建一個循環(huán),將列表當(dāng)中的所有元素都添加進去
list.append(i)
while True: # 如果為真 創(chuàng)建一個條件循環(huán)
if len(list) == 1: # 如果列表的長度為1
print(list) # 打印出該列表的數(shù)字
break
else: #否則針對其余情況,單獨創(chuàng)建一個如下的條件
count += 1 # 記數(shù)加1
pop = list[0] #取出列表當(dāng)中的第一個元素,并賦值給pop
list.pop(0) #移除列表當(dāng)中的第一個元素
if count == 3: # 如果count的數(shù)為3的時候
count = 0 #count歸0
continue #并繼續(xù)
else: # 否則
list.append(pop) #將移除的元素加入到list當(dāng)中,如此循環(huán)往復(fù)
print(list) # 最后打印出剩余在list中的元素
我們再來看一下輸出的結(jié)果:
C:\Python\python.exe "C:/Users/Administrator/Desktop/Python 練習(xí)實例100題/Python69.py"
請輸入人數(shù):34
[10]
[10]
Process finished with exit code 0
2020年4月1日(愚人節(jié)快樂!)
北京市通州區(qū)京貿(mào)中心