# Python實作課程 ## 第一堂課 : 猜數字遊戲 ## 2022 / 3 / 24 ### Tony --- ## 硬體設備 ---- 學校可以寫python的編輯器是**Spyder** 左方為撰寫程式的地方,右下方為終端機 ![](https://i.imgur.com/SATAgvu.png =70%x) --- ## 猜數字遊戲 ---- 猜數字遊戲(Guess the number) a.k.a 終極密碼 是一個在特定數字範圍內 猜到出題者所指定數字的遊戲 每次的猜測都會讓範圍縮小,直到答案被猜到 --- ## 遊戲規則 ### (即程式要實現的東西) ---- * 由兩個一大一小的數字劃出範圍 * 有唯一的答案 * 依照每次猜的數字來縮減範圍 * 若猜的數字小於答案,則下界變成該數字 * 若猜的數字大於答案,則上界變成該數字 * 如果猜到上下界重疊,則玩家自動獲勝 * 若下屆的數字大於上界(意外),則出題者輸掉遊戲 --- ## 開始寫程式 ---- 你可以下載模板:[點我](https://github.com/Tony041010/2022_CRC_Python_Project_Class_Template) 主要要寫的三個函式: 1. 主程式 (幫你寫好了) 2. 猜數字函式 I (電腦出題使用者猜) 3. 猜數字函式 II (使用者出題電腦猜) 課堂上會寫猜數字函式I,猜數字函式II的部份各位有興趣可以自己寫寫看 參考答案下禮拜會公布 ```python= def guess(x) #電腦出題 def computer_guess(x) # 使用者出題 if __name__ == '__main__': ``` ---- ## 主函式 Python沒有強迫要有像C++`int main()`的函式,通常就是直接運行你打出的程式碼(函式除外) 但也可以自己創造出主函式,利用`if __name__ == '__main__':` <font color='#FFF300'>可以幫助整理程式碼,看起來比較整齊,也會知道哪些程式會跑哪些不會</font> ```python= if __name__ == '__main__': # 裡面塞主要運行的部分 ``` ---- ## 猜數字函式 I ### (電腦出題使用者猜) ---- 程式執行程序: 1. 選擇範圍(1 ~ 一個數字x) 2. 使用者輸入猜測的數字<font color='#FFF300'>(不包括1跟x)</font> 3. 電腦給出回覆: * 高於答案 * 低於答案 * 等於答案 4. 重複 2 跟 3 直到猜中答案 ---- **使用工具:random** 我們模擬電腦在選答案,或是在猜測答案的時候,都是讓它在一個範圍內隨機選一個數字 故我們要利用random資料包裡面的`random.randint()`函式,隨機挑出一個數字 ```python= import random # 輸入這個就可以把random資料包引入這個函式 # 類似 C++ 的 include 的概念 ``` ---- f string 我們需要在輸出的字串中放入程式中某些變數的內容, 此時就可以使用f string,把變數內容用大括號包起來 ```python= high = 100 low = 10 print(f'Guess a number bgetween {low} and {high}') # 輸出 : Guess a number between 10 and 100 ``` ---- 下一頁是完整的code內容 想挑戰自己寫的先不要往下看 ---- ```python= import random def guess(x): answer = random.randint(1+1, x-1) guess = 0 low = 1 high = x while guess != answer: guess = int(input(f'Guess a number between {low} and {high} :')) if guess < answer: print('Sorry, guess again. Too low.') low = guess elif guess > answer: print('Sorry, guess agin. Too high.') high = guess print(f'Congratulation! You got the right number : {answer}.') ```
{"metaMigratedAt":"2023-06-16T21:36:18.159Z","metaMigratedFrom":"YAML","title":"Python實作一:猜數字遊戲","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":null}","contributors":"[{\"id\":\"4f731eff-9d88-41f4-af56-2e3e02f20cfc\",\"add\":2265,\"del\":83}]"}
    1996 views