如何使用本站

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]



2022年2月21日 星期一

【Python 初學者的 11 道練習題】奇偶數辨別|11 Practice Questions for Python Beginner-Odd or Even

 

photo by Pexels

前言

我的背景

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


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


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


看完這篇文章將學到:

  • 如何建立判斷條件

  • 如何將判斷條件加入迴圈

  • 如何運用二層迴圈


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


GitHub完整程式碼



題目

奇偶數辨別(Odd or even)

當使用者輸入一個介於一定範圍(例如 1 到 1000)的數字,它能夠辨別奇偶,並輸出檢驗結果給使用者。


畫面:輸入一個數字

輸入:25

輸出:奇數



判定題目

  • 使用input提供使用者輸入數字,並用int將數字轉成整數,存入變數no中

no = int(input("Please enter an integer from 1-1000:"))


  • 建立兩個判定條件,分別為no≧1;no≦1000。將兩個判定條件作為迴圈的觸發條件,若不符合條件,則顯示"Integer error, please check and re-enter"。

condition1 = no >= 1
condition2 = no <= 1000


  • 符合第一層迴圈條件後,將變數no的值除以2,並將餘數放入新的變數var中。

var = no % 2


  • 將var做為第二層迴圈的觸發條件,若餘數為0,顯示"Odd number";反之則顯示"Even number"。

if var != 0:
    print("Odd number")
else:
    print("Even number")

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



完整程式碼

no = int(input("Please enter an integer from 1-1000:"))
condition1 = no >= 1
condition2 = no <= 1000
if condition1 & condition2 == 1:
    var = no % 2
    if var != 0:
        print("Odd number")
    else:
        print("Even number")
else:
    print("Integer error, please check and re-enter")