--- tags: python, NUU --- # Python 課堂練習 ### 練習1 比較一下四則運算的差異,並且利用`python`進行一個公式解$x = \frac {-b \pm \sqrt {b^2- 4ac}} {2a}$,針對下列一元二次方程式求其根。 方程式: - $x^2+5x-24 = 0$ - $3x^2+7x+5 = 0$ - $x^2-14x+49 = 0$ >提示:可使用 `input()`函式,分別針對 $x^2$ 與 $x$ 的系數做輸入,在套入公式求解。 ```py def try_test(obj): try: a = float(obj) except (ValueError, TypeError): a = "異常產生,輸入資訊必為數字或可轉浮點數之字串\n" else: print(f"確認執行,輸入的類型為{type(obj)},將其轉化為{type(a)}") print(a) return a try_test("fdsa") try_test(123.5) try_test(1) try_test("0.58") ``` ### 練習2 將[練習1](練習1)的程式,寫入例外判斷,幫助使用者輸入時不會有問題。 功能需求: 1. 不可以因為錯誤而中止程式 2. 可連續輸入不同的一元二次方程式 ### 練習3 利用`import`匯入`math`套件庫,並且利用物件導向的概念將光學常用的公式,以`def`的形式做成套件庫,並且在主程式呼叫使用,且設定中斷以便可以隨時退出。 功能需求 1. 折射定律:輸入折射率與入射角使程式計算折射角(以度度量呈現) 2. 布魯斯特角:承上所述,將所輸入的折射率求得其布魯斯特角的數值。 3. 最大臨界角:針對入射面與折射面的材料不同求得最大臨界角。 ### 練習4 遊戲程式設計:按以下要求定義一個貓類別和老鼠的類別(class)並嘗試編寫遊戲 1. 假設遊戲場景為範圍(x,y)為 $0<=x<=10,0<=y<=10$ 2. 遊戲生成1隻貓和10隻老鼠 3. 它們的移動方向均隨機 4. 貓的最大移動能力為2(它可以隨機選擇1還是2移動) 5. 老鼠兒的最大移動能力是1 6. 當移動到場景邊緣,自動向反方向移動 7. 貓初始化體力為100 8. 貓每移動一次,體力消耗1 9. 當貓和老鼠座標重疊,貓吃掉老鼠,貓體力增加20 10. 老鼠暫不計算體力 當貓體力值為0(掛掉)或者老鼠兒的數量為0遊戲結束 ### 練習5 由電腦產生一組4位不重複的數字,使用者可以輸入任意4位數字 規則如下: 如果數字正確但是位置錯誤以B呈現,如果數字正確且位置正確則顯示A 範例:電腦數字 1234 使用者輸入 4321 電腦顯示 0A4B 使用者輸入 0123 電腦顯示 0A3B 使用者輸入 1289 電腦顯示 2A0B,直到使用者猜對,並顯示使用者猜了幾次。 ### 練習6 麻將組合 以台灣麻將為例,胡牌條件應為5面1將 面:可以以順、刻、槓的形式形成 將:以相同兩隻排作為一對 共計17張 請各位同學試著讓python完整的處理所有胡牌牌型 (不考慮七搶一形式) [參考資料](https://zh.wikipedia.org/wiki/%E5%8F%B0%E7%81%A3%E9%BA%BB%E5%B0%87) ## 計算台數 給使用者輸入任意牌型規範使用`input`輸入細節 而終端機便可提供本次牌型最終的台數 不考慮以下計算 - 暗刻類 - 門清 - 自摸 - 花牌 - 風牌 - 天聽 - 地聽 - 天胡 - 地胡 - 全求人 - 等其他需要透過遊戲過程中得以判斷的數據 範例: ```sh 請輸入牌型: cccfffbbbeeennnww ``` > c = 紅中 > f = 青發 > b = 白板 > e = 東風 > n = 北風 > w = 西風 > 詳細可參考網路麻將代號定義 輸出結果 ```sh 碰碰胡4台 大三元8台 共計 12台 ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up