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,原来是自己少了括号导致的。
  不加的场合,当输入字母的话,会抛出如下异常:
  python ValueError: invalid literal for int() with base 10: '***'

 
   

--- over ---

你可能感兴趣的:(python)