#45025: 給新手的 Python 小技巧


christang426859.2@gmail.com (油蔥)

學校 : 國立中山大學
編號 : 260057
來源 : [140.117.183.231]
最後登入時間 :
2025-03-08 18:25:03
c297. APCS-2016-1029-4棒球遊戲 -- 2016年10月APCS | From: [220.157.124.203] | 發表日期 : 2025-01-03 02:35

我自己的解題方式:

  1. 壘包狀態 base_bag = [False, False, False](True -> 有人、False -> 沒人)
  2. def run(n):
    n 代表跑壘數(Homerun 可以當成跑四壘)
    利用 base_bag.insert()base_bag.pop() 更新壘包狀態
    只有第一次 insert 是 insert True(打擊者上壘)其餘皆為False(打擊者繼續跑,但壘包上不再有人)
    如果 .pop() 的是 True(三壘跑回本壘)即加一分

  3. def out():
    設定 out_count += 1
    如果 our_count % 3 == 0 則三出局 -> 壘包狀態全部改回False

 

其他Python小技巧:

  1. 因為 'FO', 'GO', 'SO' 都是相同意思,在判斷時可以用 if hit_list[i][j] in ['FO', 'GO', 'SO']: 讓程式碼更簡潔

  2. 如果不想判斷到底有幾個打擊資訊,可以使用except:
    在一開始的打擊資訊陣列宣告時:
    hit_list = [list(input().split()) for _ in range(9)]
    每個Row的長短會不盡相同(前幾棒一定會>後幾棒)
    而如果題目要求的出局數到最後一刻都還未達到
    且我們沒有特別判斷cell是否存在,而繼續讓程式跑時
    將會出現IndexError

    這時候只需要使用try-except來處理這個例外錯誤
    當遇到IndexError直接輸出答案就沒事了!
    這樣就可以完全忽略題目給的各球員打擊次數了!
    算是一個小小的作弊技巧(?
 
ZeroJudge Forum