1. 程式人生 > >Python代碼的人機大戰(循環嵌套)

Python代碼的人機大戰(循環嵌套)

art 1.5 inpu 格式 找到 轉換 這樣的 提示 容易

第一次動手寫隨筆,記錄一下今早的1.5小時努力成果

題目是這樣的 :

       人和機器進行猜拳遊戲寫成一個類,首先選擇角色:1 曹操 2張飛 3 劉備,然後選擇的角色進行猜拳:1剪刀 2石頭 3布 玩家輸入一個1-3的數字;然後電腦出拳 隨機產生1個1-3的數字,提示電腦出拳結果( 1剪刀 2石頭 3布 ) ,雙方出拳完畢後:角色和機器出拳對戰,對戰結束後,最後出示本局對戰結果...贏...輸,然後提示用戶是否繼續?按y繼續,按n退出。最後結束的時候輸出結果 角色贏幾局 電腦贏幾局,平局幾次 遊戲結束。

代碼如下:

     

import random
class game_huaquan():
    def Gamer(self):
            Part = input("請選擇你要操作的角色,1.曹操 2.張飛 3.劉備 :")
            return Part
    def Game(self,win=0,lose=0,draw=0,num=0):
        while True:
            s = (1,2,3)
            S = ("剪刀", "石頭", "布")
            input_number = int(input("請輸入出拳結果,1.剪刀 2.石頭 3.布\n"))
            random_number = random.randint(1,3)
            if input_number not in s:
                print(‘輸入有誤,請重新輸入‘)
                continue
            else:
                while True:
                    if input_number == random_number:
                        print(‘您出拳結果:{}\n電腦出拳結果:{} \n打平‘.format(input_number,random_number))
                        draw += 1
                        num += 1
                    if (input_number == 1 and random_number== 2) or (input_number==2 and random_number== 3) or (input_number==3 and random_number== 1):
                        print(‘您出拳結果:{} \n電腦出拳結果:{} \n您輸了‘.format(input_number,random_number))
                        lose += 1
                        num += 1
                    if (input_number == 2 and random_number == 1) or (input_number == 3 and random_number== 2) or (input_number == 1 and random_number == 3):
                        print(‘您出拳結果:{}\n電腦出拳結果:{} \n您贏了‘.format(input_number,random_number))
                        win += 1
                        num += 1
                    while True:
                        con = input("輸入‘Y‘繼續遊戲,輸入‘N‘結束遊戲:\n")
                        if con == ‘Y‘:
                            break
                        elif con == ‘N‘:
                            return win,lose,draw,num
                        else:
                            print("輸入錯誤請重新輸入!")
                            continue
                    break
    def Game_console(self,Part,win,lose,draw,num):
                    if Part == ‘1‘:
                        print(‘本次遊戲中,您操作的角色曹操贏{}局,輸{}局,平{}局,進行了{}局‘.format(win,lose,draw,num))
                    if Part == ‘2‘:
                        print(‘本次遊戲中,您操作的角色張飛贏{}局,輸{}局,平{}局,進行了{}局‘.format(win,lose,draw,num))
                    if Part == ‘3‘:
                        print(‘本次遊戲中,您操作的角色劉備贏{}局,輸{}局,平{}局,進行了{}局‘.format(win,lose,draw,num))

if __name__ == ‘__main__‘:
    part = game_huaquan().Gamer()
    Scene = game_huaquan().Game()
    game_huaquan().Game_console(part,Scene[0],Scene[1],Scene[2],Scene[3])

  註意要點有 處:

        1.出拳情況應該往結果上靠,剛開頭走錯路,寫了9個if,實際上3個就能解決了,要麽贏、要麽輸、要麽平。註意到這一點結果判定就很好解決了

        2.循環的跳出,在最後一個break上浪費了我半小時,一直循環跳出不到出拳,以後要註意

        3.不要進行無意義的格式轉換,無意義的格式轉換容易出錯,哪怕第一次運行沒問題,第二次,第三次總會出現各種各樣奇怪的bug,而且很難找到問題根源

Python代碼的人機大戰(循環嵌套)