Python---石头剪子布

背景

学以致用,这一直是对自己的要求,技术自叹不如人,还是好好搬砖吧。

对于【石头剪子布】的游戏,大家肯定不陌生,之前住在一起的小伙伴,每次决定谁去给大家带饭的时候,就选的是石头剪子布,为了防止作弊,我们用的是微信里的【石头剪子布】。
本次主要是实现判断逻辑,图形界面的,本人对Web之类的不了解,暂时在需求之外。

实现

需求如下:
1:可连续玩
2:人机大战

环境:
os: windows10 
python:3.4.3

代码如下:
# -*— encoding = utf-8 -*-  
  
import sys  
import string  
import random  
  
# date: 2016-9-28  
  
menuDict = {1:"剪子", 2:"石头", 3:"布"}  
  
  
# compare both choice  
def cpmResult(opt):  
    print("-" * 10)  
    print("你的选择: {}".format(menuDict[opt]))  
    computer_choice = random.randrange(1, 4)  
    print("电脑的选择: {}".format(menuDict[computer_choice]))  
  
    if opt == computer_choice:  
        print("-->比赛结果: 平局")  
    elif (opt>computer_choice and opt - 1 == computer_choice) or (opt+2==computer_choice):  
        print("-->比赛结果: 你赢")  
    else:  
        print("-->比赛结果: 电脑赢")  
    print("-" * 10)  
  
# make sure game is continue  
def isContinuePlay():  
    replay = input("是否继续[Y/y,N/n]: ").strip()  
    if replay in ("Y", "y", "N", "n"):
        if replay.lower() == "n":  
            print("-->你选择结束游戏!")  
            sys.exit(0)  
        else:
            RSFGame()
    else:  
        print("Invalid choice, try again.")  
        isContinuePlay() 
  
# game construcation
def RSFGame():  
    while True:  
        propt = input(""" 
这是一个石头剪子布的游戏,请根据提示选择: 
1.剪子 
2.石头 
3.布 
0.退出游戏 
 
请选择[0--3]: """).strip()  
  
        if propt in ("0", "1", "2", "3"):  
            opt = int(propt)  
            if opt == 0:  
                print("-->你选择结束游戏!")  
                sys.exit(0)  
            else:  
                cpmResult(opt)  
                isContinuePlay()  
        else:  
            print("Invalid option. try again.")  
  
  
if __name__ == '__main__':  
    RSFGame() 
 



测试结果:
这是一个石头剪子布的游戏,请根据提示选择:
1.剪子
2.石头
3.布
0.退出游戏

请选择[0--3]: df 
Invalid option. try again.

这是一个石头剪子布的游戏,请根据提示选择:
1.剪子
2.石头
3.布
0.退出游戏

请选择[0--3]: fg 
Invalid option. try again.

这是一个石头剪子布的游戏,请根据提示选择:
1.剪子
2.石头
3.布
0.退出游戏

请选择[0--3]: f 
Invalid option. try again.

这是一个石头剪子布的游戏,请根据提示选择:
1.剪子
2.石头
3.布
0.退出游戏

请选择[0--3]: e
Invalid option. try again.

这是一个石头剪子布的游戏,请根据提示选择:
1.剪子
2.石头
3.布
0.退出游戏

请选择[0--3]: 4
choose number out of range. try again.

这是一个石头剪子布的游戏,请根据提示选择:
1.剪子
2.石头
3.布
0.退出游戏

请选择[0--3]: 34
choose number out of range. try again.

这是一个石头剪子布的游戏,请根据提示选择:
1.剪子
2.石头
3.布
0.退出游戏

请选择[0--3]: 3
----------
你的选择: 布
电脑的选择: 剪子
-->比赛结果: 电脑赢
----------
是否继续[Y/y,N/n]: df
Invalid choice, try again.
是否继续[Y/y,N/n]: y

这是一个石头剪子布的游戏,请根据提示选择:
1.剪子
2.石头
3.布
0.退出游戏

请选择[0--3]: 2
----------
你的选择: 石头
电脑的选择: 布
-->比赛结果: 电脑赢
----------
是否继续[Y/y,N/n]: y

是否继续[Y/y,N/n]: y


这是一个石头剪子布的游戏,请根据提示选择:
1.剪子
2.石头
3.布
0.退出游戏


请选择[0--3]: 3
----------
你的选择: 布
电脑的选择: 剪子
-->比赛结果: 电脑赢
----------
是否继续[Y/y,N/n]: df
Invalid choice, try again.
是否继续[Y/y,N/n]: sdf
Invalid choice, try again.
是否继续[Y/y,N/n]: y


这是一个石头剪子布的游戏,请根据提示选择:
1.剪子
2.石头
3.布
0.退出游戏


请选择[0--3]: 2
----------
你的选择: 石头
电脑的选择: 石头
-->比赛结果: 平局
----------
是否继续[Y/y,N/n]: n
-->你选择结束游戏!




问题点总结:
1. 对于python,刚开始自学,查看API的能力还是比较弱,意识不足。
2.此次代码调试中,关于S.isdigit(),刚开始写成了【propt.isdigit】,输入字符就一直报错。最后查看了API,原来是自己少了括号导致的。
  不加的场合,当输入字母的话,会抛出如下异常:<pre name="code" class="plain">  python ValueError: invalid literal for int() with base 10: '***'

 
 

--- over ---
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值