Python練習(xí)實例69 | 有n個人圍成一圈,順序排號。從第一個人開始報數(shù)(從1到3報數(shù)),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。

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

小黃人.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)中心

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容