1. 程式人生 > 程式設計 >Python約瑟夫生者死者小遊戲例項講解

Python約瑟夫生者死者小遊戲例項講解

問題描述:

30 個人在一條船上,超載,需要 15 人下船。於是人們排成一隊,排隊的位置即為他們的編號。

報數,從 1 開始,數到 9 的人下船。如此迴圈,直到船上僅剩 15 人為止,問都有哪些編號的人下船了呢?

解決思路:

給30個人編號1-30,每個人的初值都是1(在船上),i代表他們的編號,j代表被扔下船的人數(j=15時迴圈結束),用check記數,check=9時將對應編號i的人置0(扔下船)並讓check重新記數。

當i等於31時,手動將i置為1

當對應編號i的人值為0時,代表此人已經不在船上,i+1找到下一個人記數,以此類推。

people={}
for x in range(1,31):
  people[x]=1
# print(people)
check=0
i=1
j=0
while i<=31:
  if i == 31:
    i=1
  elif j == 15:
    break
  else:
    if people[i] == 0:
      i+=1
      continue
    else:
      check+=1
      if check == 9:
        people[i]=0
        check = 0
        print("{}號下船了".format(i))
        j+=1
      else:
        i+=1
        continue

執行以上例項,輸出結果為:

9號下船了
18號下船了
27號下船了
6號下船了
16號下船了
26號下船了
7號下船了
19號下船了
30號下船了
12號下船了
24號下船了
8號下船了
22號下船了
5號下船了
23號下船了

到此這篇關於Python約瑟夫生者死者小遊戲例項講解的文章就介紹到這了,更多相關Python 約瑟夫生者死者小遊戲內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!