如何使用本站

2022年2月24日 星期四

【Python 初學者的 11 道練習題】填字遊戲|11 Practice Questions for Python Beginner-Mad libs game

 

photo: Tima Miroshnichenko/Pexels


前言

我的背景

Hi 我是Sky,利用業餘自學Python的電機工程師。正朝資料科學&資料分析師準備中,目前正累積解題作品,以及學習實務面所必備的硬實力。


這一系列的文章,希望透過同理心,幫助Python程式小白,學完基礎的語法、函式之後,到底該怎麼運用在特定的需求上。因此,我將這篇的11道Python練習題,分享我判讀及解題的過程。


╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳


看完這篇文章將學到:

  • 如何新增、移除列表(List)中的資料,以及打亂列表(List)中的資料

  • 如何引用函式(Module)

  • 如何使用while迴圈

  • 如何使用break跳脫程式執行

  • 如何將列表(List)轉換成字串(String)


╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳


GitHub完整程式碼


題目

填字遊戲(Mad libs game)

使用者輸入任何字,它可以是名詞、形容詞、動詞、代名詞等。程式得到文字後,可自行排列,組成成一個故事。


判定題目

  • 建立一個空列表,以便新增使用者輸入的字詞。

list = []


  • 以持續執行(Ture)的while迴圈包裝if 判斷式,判斷使用者輸入的資料是否為字詞。若為字詞則持續新增至列表內。

elif data != "x" or data == "X":

list +=[data]


  • 另一種情況,使用者輸入"x"表示完成輸入。這邊也將大寫的"X"列入判斷條件。

if data == "x" or data == "X":


  • 刪除列表中的最後一筆資料,即是"x"或"X"。

del list[-1]


  • 使用random.sample函式,以隨機不重複的方式取出list列表內的資料,儲存至shuffled_lists列表。語法為random.sample(目標列表, 隨機不重複取出的資料數),這邊以len()方法,將list列表的資料總數當成隨機不重複取出的資料數。

from random import sample

shuffled_lists = sample(list, len(list))


  • 使用join()方法將shuffled_lists列表轉為字串(string)形式,儲存至變數str_lists。join()方法前綴" "的空白字元,會做為列表資料轉為字串的連接。

str_lists = " ".join(shuffled_lists)


  • 最後,輸出str_lists結果,並以break跳出while迴圈,結束這支Python程式運行。

print("Your new story is:", str_lists)

break


以上就是本題的判讀&解題過程。


完整程式碼

from random import sample
list = []

while True:
  data = input("""Please enter the words you want to create a new story
      (if you are done, please enter the "x" key):""")
  if data == "x" or data == "X":
      list += [data]
      del list[-1]
      shuffled_lists = sample(list, len(list))
      str_lists = " ".join(shuffled_lists)
      print("Your new story is:", str_lists)
      break
  elif data != "x" or data == "X":
      list +=[data]



沒有留言:

張貼留言