習題里比較有意思的一個題目,實現石頭剪刀布這個游戲,起初設計的時候走彎路了(主要時被習題里那個“盡量少用if判斷”給整暈了),想的太復雜,后來發現其實非常簡單,完全可以不寫if語句。
還是枚舉法:
#! /usr/bin/env python
import random
choicetuple = ('rock','scissors','paper')
#枚舉所有的比較結果,格式定義為{‘玩家-電腦’:‘結果’}
judgedict = {'rock-rock':'OK!Draw!','scissors-scissors':'OK!Draw!','paper-paper':'OK!Draw!','rock-scissors':'OK!You Win!', 'rock-paper':'HAHA!You lose!', 'scissors-rock':'HAHA!You lose!', 'scissors-paper':'OK!You Win!', 'paper-rock':'OK!You Win!', 'paper-scissors':'HAHA!You lose!'}
def rockscissorspaper(playerchoice, randomchoice):
newstr = playerchoice+'-'+randomchoice
#get內建函數是亮點,因為我之前用的是try expect這種傻乎乎的東西,看到第7章的內容,果斷用get()
return judgedict.get(newstr, 'Computer is played badly!')
if __name__ == '__main__':
print('rock!!scissors!!paper!!')
while True:
playerchoice = input('COME ON!SHOW ME YOUR HAND STYLE:')
randomchoice = choicetuple[random.randint(0,len(choicetuple)-1)]
print('Eat this:%s'% randomchoice)
resultstr = rockscissorspaper(playerchoice, randomchoice)
print(resultstr)
這個玩法正常情況下,玩家想贏電腦,概率是三分之一(平局當然不算贏),但是,這么玩游戲也太沒勁了,勝利得來太容易啊!
玩游戲果斷得有VIP(RMB)玩家和平民玩家之分啊!VIP0~9,9級VIP,贏的概率是3分之一,依次往下推,0級VIP,贏主要看臉!
怎么實現呢?嘿嘿,有興趣的同學可以試一哈!