zoukankan      html  css  js  c++  java
  • Python练习

    '''
    3.人和机器猜拳游戏写成一个类,有如下几个函数:
    1)函数1:选择角色1 曹操 2张飞 3 刘备
    2)函数2:角色猜拳1剪刀 2石头 3布 玩家输入一个1-3的数字
    3)函数3:电脑出拳 随机产生1个1-3的数字,提示电脑出拳结果
    4)函数4:角色和机器出拳对战,对战结束后,最后出示本局对战结果...赢...输,然后提示用户是否继续?按y继续,按n退出。
    5)最后结束的时候输出结果 角色赢几局 电脑赢几局,平局几次 游戏结束
    '''
    第一种方法:
    class ren_VS_jiqi:
        def role_choice(self):
            self.roles = {1:'曹操',2:'张飞',3:'刘备'}
            self.role_num = int(input('请选择角色1 曹操 2张飞 3 刘备:'))
            return self.roles[self.role_num]
        def role_punch(self):
            # self.role = self.role_choice()
            while True:
                punch = {'1': '剪刀', '2': '石头', '3': '布'}
                role_punch1 = input('请猜拳1剪刀 2石头 3布:')
                if role_punch1 in punch.keys():
                    print('%s出的拳是:%s' %(self.roles[self.role_num],punch[role_punch1]))
                    break
                else:
                    print('输入有误,请重新输入!')
                    continue
            return role_punch1
        def machine_punch(self):
            import random
            punch1 = {'1': '剪刀', '2': '石头', '3': '布'}
            machine_punch = str(random.randint(1,3))
            print("机器出拳:%s" % punch1[machine_punch])
            return machine_punch
        def R_Vs_M(self):
            role = self.role_choice()
            result_reny = 0 #人赢
            result_jiqiy = 0 #机器赢
            result_ping = 0 #平局
            while True:
                ren_num = int(self.role_punch())
                jiqi_num = int(self.machine_punch())
                if ren_num != jiqi_num:
                    if ren_num == 1 and jiqi_num ==3:
                        result_reny +=1
                    elif ren_num == 2 and jiqi_num == 1:
                        result_reny +=1
                    elif ren_num == 3 and jiqi_num == 1:
                        result_reny +=1
                    else:
                        result_jiqiy +=1
                else:
                    result_ping +=1
                choice=input("是否要继续猜拳?按y继续,按n退出")
                if choice=='y':
                    continue
                else:
                    break
            print("对战结束:%s赢了%s局,电脑赢了%s局,平了%s局"%(self.roles[self.role_num],result_reny,result_jiqiy,result_ping))
    ren_VS_jiqi().R_Vs_M()
    

      第二种方法:

    class HumanVSMachine:
        def choose_role(self):
            while True:
                role_info={"1":"曹操","2":"张飞","3":"刘备"}
                role_num=input("请选择你喜欢的角色:1:曹操 2:张飞 3:刘备")
                if role_num in role_info.keys():
                    print("你选择的角色是%s"%role_info[role_num])
                    break
                else:
                    print("角色选择错误,请重新选择!")
                    continue
            #返回一个值  返回角色值
            return role_info[role_num]
         #方法一:
        def cq(self,role,mode):#mode=1  人出拳 mode=2  就是电脑出拳
            import random
            cq_info={"1":"石头","2":"剪刀","3":""}
            if mode==1:
                cq_num=input("请输入对应的数字出拳:1石头 2剪刀 3布")
            elif mode==2:
                cq_num=str(random.randint(1,3))
            if cq_num in cq_info.keys():
                print(role+"出的是%s"%cq_info[cq_num])
            else:
                print("出拳错误!")
            return cq_num
        # 方法二:
        # def role_cq(self,role_name):
        #     cq_num=input("请输入对应的数字出拳:1剪刀 2石头 3布")
        #     cq_info={"1":"剪刀","2":"石头","3":"布"}
        #     if cq_num in cq_info.keys():
        #         print(role_name+",你出的是%s"%cq_info[cq_num])
        #     else:
        #         print("出拳错误!")
        #     return cq_num
        #
        # def machine_cq(self):
        #     cq_num=str(random.randint(1,3))#需要转换一下格式
        #     cq_info={"1":"剪刀","2":"石头","3":"布"}
        #     if cq_num in cq_info.keys():
        #         print("电脑出的是%s"%cq_info[cq_num])
        #     else:
        #         print("出拳错误!")
        #     return cq_num#字符串
     
        def human_vs_machine(self):
            #人机对战
            role=self.choose_role()#角色
            #变量:
            human_win=0
            ping=0
            machine_win=0
            while True:
                #方法一:
                # human_cq=int(self.role_cq(role))#角色出拳
                # machine_cq=int(self.machine_cq())#机器出拳
                #方法二
                human_cq=int(self.cq(role,1))
                machine_cq=int(self.cq("电脑",2))
     
                if human_cq!=machine_cq:#数值比较 1 石头  2 剪刀  3布
                    if human_cq==1 and machine_cq==2:
                        human_win+=1
                    elif human_cq==2 and machine_cq==3:
                        human_win+=1
                    elif human_cq==3 and machine_cq==1:
                        human_win+=1
                    else:
                        machine_win+=1
                else:
                    ping+=1
                choice=input("是否要继续猜拳?按y继续,按n退出")
                if choice=='y':
                    continue
                else:
                    break
            print("对战结束:人赢了%s局,电脑赢了%s局,平了%s局"%(human_win,machine_win,ping))
     
    HumanVSMachine().human_vs_machine()
  • 相关阅读:
    机器学习-数据表达与特征工程
    机器学习-朴素贝叶斯算法
    机器学习之广义线性模型
    机器学习-MNIST数据集使用二分类
    机器学习-数据预处理、降维、特征提取及聚类
    机器学习-神经网络
    机器学习-向量机SVM
    机器学习-决策树与随机森林
    深入计算机原理——第三章机器级的表示(三)
    深入计算机原理——第三章机器级的表示(二)
  • 原文地址:https://www.cnblogs.com/guoyuanping/p/9852746.html
Copyright © 2011-2022 走看看