首页 > 编程语言 >python实现猜拳小游戏

python实现猜拳小游戏

时间:2023-09-16 22:32:46浏览次数:29  
标签:computer 猜拳 get python paper 小游戏 user rock gesture

功能需求

假设石头剪刀布分别由1,2,3代表,程序在石头剪刀布中随机生成一个结果,根据用户输入的结果判断用户的输赢。用户输赢和平局否需要打印出结果。

石头赢剪刀

剪刀赢布

布 赢 石头


功能分析

1:定义猜拳的手势、名称和结果

2:定义一个函数 get_user_gesture()获取用户的手势信息,并且需要考虑到用户输入异常的情况,避免因此造成程序的异常运行

3:定义一个函数get_computer_gesture()随机生成电脑的手势

4:定义一个函数get_game_result判断游戏结果

5:定义函数play_game()运行主程序,利用if。。else。。语句,通过比较用户输入的数据和电脑随机生生成的结果进行比较,返回相应的信息

程序实现

import random
# 定义猜拳的手势
rock = 1
scissors = 2
paper = 3
# 定义游戏结果
win = 1
lose = -1
draw = 0
# 定义手势名称
gesture_names = {rock: '石头', scissors: '剪刀', paper: '布'}
# 获取用户输入的手势
def get_user_gesture():
    while True:
        try:
            gesture = int(input('请出拳(1-石头 2-剪刀 3-布): '))
            if gesture in (rock, scissors, paper):
                return gesture
        except ValueError:
            pass
        print('输入错误,请重新输入')
# 随机生成电脑的手势
def get_computer_gesture():
    return random.randint(rock, paper+1) #利用randint的规则,rock是起始范围,paper+1是终止范围,因此三种手势都可以取得到
# 判断游戏结果
def get_game_result(user_gesture, computer_gesture):
    if user_gesture == computer_gesture:
        return draw
    elif (user_gesture == rock and computer_gesture == scissors) or \
         (user_gesture == scissors and computer_gesture == paper) or \
         (user_gesture == paper and computer_gesture == rock):
        return win
    else:
        return lose
# 运行游戏
def play_game():
    while True:
        user_gesture = get_user_gesture()
        computer_gesture = get_computer_gesture()
        print('你出了', gesture_names[user_gesture], ',电脑出了', gesture_names[computer_gesture])
        result = get_game_result(user_gesture, computer_gesture)
        if result == win:
            print('你赢了!')
        elif result == lose:
            print('你输了!')
        else:
            print('平局')
        again = input('再玩一次?(y/n): ')
        if again.lower() != 'y':
            break
    print('游戏结束')
# 启动游戏
play_game()



运行结果

python实现猜拳小游戏_数据



标签:computer,猜拳,get,python,paper,小游戏,user,rock,gesture
From: https://blog.51cto.com/u_15928170/7496753

相关文章

  • python | 连接数据库
    介绍一些python中用于连接常用数据库的依赖库。SQLite3SQLite3是Python中自带的数据库模块,适用于小型应用和快速原型开发。SQLite是一个进程内的库,实现了自给自足的、无服务器的、是非常小的,是轻量级的、事务性的SQL数据库引擎。它是一个零配置的数据库,不需要在系统中配置......
  • Python 基本操作
    Python语法可以直接在命令行中编写并执行:>>>print("Hello,World!")Hello,World!或者,可以在服务器上创建一个带有.py文件扩展名的Python文件,并在命令行中运行它:C:\Users\YourName>pythonmyfile.pyPython缩进缩进是指代码行开头的空格。在其他编程语言中,代码中的缩进......
  • Python-day9
    #集合和元组#可变序列可以增删改操作:列表、字典、集合#不可变序列不可以增删改操作:字符串、元组str='beabetterperson,'print(id(str))str=str+'thisisouragreement'print(str)print(id(str))#元组的创建&元组只有一个元素的创建&空元组Y1=('I','like','grape',......
  • Python的模块调用给包的使用
    Python的模块调用给包的使用名字查找顺序模块的相对导入和绝对导入包的使用软件开放目录命名规范正则表达式(简单了解)名字查找顺序以后再给文件名或者叫模块名起名字的时候一定不能跟内置模块名冲突1.先从内存中查找2.再从内置模块中查找3.最后去环境变量sys.path......
  • Python分享之对象的属性
    Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统一的管理方案。属性的__dict__系统对象的属性可能来自于其类定义,叫做类属性(classattribute)。类属性可能来自类定义自身,也可能根据类定义继承来的。一个对象的属性还可能是该对象实例定义的,......
  • python 正则表达式之 怎么匹配一对中括号 [ ]
    ----------------------------------------------------------------------------------------在正则表达式中,前中括号[属于特殊字符,要匹配它,需要转义,那就加上转义字符\来进行转义,即加上\res=re.findall(r"\[[\dA-Z]*]",'AAAA[CEBT905A1B6A]/#')print(res)------[......
  • 用Python编写的FTP CLIENT端脚本
    1importftplib,os2temp=os.environ["temp"]3#参考连接:https://blog.csdn.net/wyt2wyt/article/details/1289510394ftp=ftplib.FTP()5ftp.connect("127.0.0.1",2121)6ftp.login("user","123456789")78defuplo......
  • 个人项目:Python实现简易论文查重
    这个作业属于哪个课程软件工程这个作业要求在哪里个人项目这个作业的目标个人项目,实现论文查重功能本项目上传至个人GitHub:yulinnn/3121004802项目需求题目:论文查重描述如下:设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论......
  • 用Python编写的FTP SERVER端脚本
    1frompyftpdlib.authorizersimportDummyAuthorizer2frompyftpdlib.handlersimportFTPHandler,ThrottledDTPHandler3frompyftpdlib.serversimportFTPServer4frompyftpdlib.logimportLogFormatter5importlogging67#记录日志,这里既输出到屏幕又输......
  • Python——20days
    名字的查找顺序绝对导入和相对导入包的使用正则表示式(独立的语言)字符组字符等…………………………————————————————————————名字的查找顺序:1.先从内存中查找2.再从内置模块中查找3.最后去环境变量sys.path中查找如果以上都找不到,直接报错!......