# ZeroJudge《h026 猜拳》解 練習使用函式的解法 ```python= def win (x): # 回傳會贏 x 的拳 if x == 0: return 5 elif x == 2: return 0 else: return 2 def bro (prev1, prev2): if prev1 == prev2: # 題敘:如果絲絲連續兩輪出了一樣的拳, return win (prev1) # 下一輪他就會出打敗絲絲前兩輪的拳。 else: # 否則, return prev1 # 他下一輪會出跟絲絲前一輪一樣的拳。 f = int (input ()) # 哥哥的第一拳 (題敘) n = int (input ()) # 絲絲總共出了幾拳 (題敘) ys = list (map (int, input ().split ())) # 絲絲每輪出的拳 # 下面這段程式根據題敘產生哥哥每輪出的拳 bs = [ f ] # 測資提供了第 1 拳 if n > 1: bs.append (ys [0]) # 第 2 拳 if n > 2: # 緊接著 bs.append 會是第 3 拳 for i in range (1, n): # List 的序號從 0 開始 bro.append (win [sis [i]]) else: bro.append (sis [i]) for i in range (n): print (bro [i], end=" ") if bro [i] != sis [i]: break if bro [i] == sis [i]: print (": Drew", end=" ") elif bro [i] == win [sis [i]]: print (f": Won", end=" ") else: print (f": Lost", end=" ") print ("at round", i + 1) ``` 比較高級的解法 ```python= win = [ 5, 1, 0, 1, 1, 2 ] # 0 2 5 bs = [ int (input ()) ] n = int (input ()) ys = list (map (int, input ().split ())) if n > 1: bs.append (ys [0]) if n > 2: for i in range (1, n): if sis [i] == sis [i - 1]: bro.append (win [sis [i]]) else: bro.append (sis [i]) for i in range (n): print (bro [i], end=" ") if bro [i] != sis [i]: break if bro [i] == sis [i]: print (": Drew", end=" ") elif bro [i] == win [sis [i]]: print (f": Won", end=" ") else: print (f": Lost", end=" ") print ("at round {i + 1}") ```