《python核心编程第二版》练习题——游戏:石头剪刀布

习题里比较有意思的一个题目,实现石头剪刀布这个游戏,起初设计的时候走弯路了(主要时被习题里那个“尽量少用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,赢主要看脸!

怎么实现呢?嘿嘿,有兴趣的同学可以试一哈!

转载于:https://my.oschina.net/u/3803035/blog/1790102

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值