python类练习

#人和机器猜拳游戏
#选择角色1 曹操 2张飞 3 刘备
#角色猜拳1剪刀 2石头 3布 玩家输入一个1-3的数字
#电脑出拳 随机产生1个1-3的数字,提示电脑出拳结果,本局对战结果...赢...输,是否继续?y/n
#输出结果 角色赢几局 电脑赢几局,平局几次 游戏结束
import random
class RolePcGame:
    roles = ['曹操', '张飞', '刘备']
    fist_list = ['剪刀', '石头', '']

    def get_role_name(self): # 选角
        role = int(input("请选择角色[曹操:1,张飞:2,刘备:3]:"))
        while role not in (1,2,3):
            role = int(input("你选择的角色不存在,请重新选择[曹操:1,张飞:2,刘备:3]:"))
            break
        return self.roles[role-1]  # 返回角色名称

    def get_role_fist(self): # 角色出拳
        fist_num = int(input( "请角色出拳[剪刀:1,石头:2, 布:3]:"))
        while fist_num not in (1, 2, 3):
            fist_num = int(input("输入有误,请重新出拳[剪刀:1,石头:2,布:3]:"))
            break
        return fist_num

    def get_pc_fist(self): # 电脑出拳
        fist_num = random.randint(1,3)
        return fist_num


    def pve(self):  # 人机对战计算
        win_role = 0  # 统计角色赢的局数
        win_pc = 0  # 统计电脑赢的局数
        draw = 0  # 统计平局数

        # 获得角色
        role_name = self.get_role_name()  # 获取角色名称,get_role_name()返回的就是角色名称
        print("恭喜你,选角成功,你选的角色是:",role_name)
        while True:
            print(role_name + "请出拳:")
            role_fist = self.get_role_fist() #角色出拳
            # print("电脑请出拳")
            pc_fist = self.get_pc_fist() # 电脑出拳
            print("{0}角色出的拳是:{1},电脑出的拳是:{2}".format(role_name,self.fist_list[role_fist-1],self.fist_list[pc_fist-1]))
            if role_fist - pc_fist in (1,-2): #角色胜出
                print(role_name + "赢了")
                win_role +=1
            elif role_fist - pc_fist == 0:  #平局
                print("人机平局")
                draw +=1
            elif role_fist - pc_fist in(-1,2): #电脑胜出
                print("pc赢了")
                win_pc +=1

            choose = input("是否继续游戏?按y继续,按n退出")
            if choose == 'n':
                print("退出游戏")
                break
        print("{0}一共赢了{1}局,电脑赢了{2}局,平{3}局".format(role_name,win_role, win_pc, draw))

if __name__ == '__main__':
    RolePcGame().pve()
原文地址:https://www.cnblogs.com/jialeliu/p/14083136.html