Try   HackMD

Python 課堂練習

練習1

比較一下四則運算的差異,並且利用python進行一個公式解

x=b±b24ac2a,針對下列一元二次方程式求其根。

方程式:

  • x2+5x24=0
  • 3x2+7x+5=0
  • x214x+49=0

提示:可使用 input()函式,分別針對

x2
x
的系數做輸入,在套入公式求解。

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. 不可以因為錯誤而中止程式
  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完整的處理所有胡牌牌型
(不考慮七搶一形式)

參考資料

計算台數

給使用者輸入任意牌型規範使用input輸入細節
而終端機便可提供本次牌型最終的台數

不考慮以下計算

  • 暗刻類
  • 門清
  • 自摸
  • 花牌
  • 風牌
  • 天聽
  • 地聽
  • 天胡
  • 地胡
  • 全求人
  • 等其他需要透過遊戲過程中得以判斷的數據

範例:

請輸入牌型: cccfffbbbeeennnww

c = 紅中
f = 青發
b = 白板
e = 東風
n = 北風
w = 西風
詳細可參考網路麻將代號定義
輸出結果

碰碰胡4台
大三元8台
共計 12台