Python练习,,‘‘‘3.人和机器猜


‘‘‘
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()

Python练习

评论关闭