简体   繁体   English

while 循环没有破坏 python

[英]while loop not breaking python

line1 = (" 1  | 2  | 3 ")
line2 = ("----|----|----")
line3 = (" 4  | 5  | 6 ")
line4 = ("----|----|----")
line5 = (" 7  | 8  | 9 ")

lines = [line1, line2, line3, line4, line5]

answer1 = 0
answer2 = 0
answer3 = 0
answer4 = 0
answer5 = 0

answers1 = [answer1, answer2, answer3, answer4, answer5]

p2answer1 = 0
p2answer2 = 0
p2answer3 = 0
p2answer4 = 0
p2answer5 = 0

answers2 = [p2answer1, p2answer2, p2answer3, p2answer4, p2answer5]

for word in lines:
    print(word)
    
count = 0
count2 = 0
    
while count <= 4:
    
    while True:
        
        count += 1
        
        
        playerinput = int(input())
        
        
        if playerinput == 1:
            line1 = line1.replace('1', 'X')
            lines = [line1, line2, line3, line4, line5]
            if count == 1:
                answer1 = playerinput
            if count == 2:
                answer2 = playerinput
            if count == 3:
                answer3 = playerinput
            if count == 4:
                answer4 = playerinput    
            if count == 5:
                answer5 = playerinput
            answers1 = [answer1, answer2, answer3, answer4, answer5]
                
            for word in lines:
                print(word)
            break    
    

        
        
        if playerinput == 2:
            line1 = line1.replace('2', 'X')
            lines = [line1, line2, line3, line4, line5]
            if count == 1:
                answer1 = playerinput
            if count == 2:
                answer2 = playerinput
            if count == 3:
                answer3 = playerinput
            if count == 4:
                answer4 = playerinput    
            if count == 5:
                answer5 = playerinput     
            answers1 = [answer1, answer2, answer3, answer4, answer5]
            for word in lines:
                print(word)
            break

    
        if playerinput == 3:
            line1 = line1.replace('3', 'X')
            lines = [line1, line2, line3, line4, line5]
            if count == 1:
                answer1 = playerinput
            if count == 2:
                answer2 = playerinput
            if count == 3:
                answer3 = playerinput
            if count == 4:
                answer4 = playerinput    
            if count == 5:
                answer5 = playerinput   
            answers1 = [answer1, answer2, answer3, answer4, answer5]
            for word in lines:
                print(word)
            break


        if playerinput == 4:
            line3 = line3.replace('4', 'X')
            lines = [line1, line2, line3, line4, line5]
            if count == 1:
                answer1 = playerinput
            if count == 2:
                answer2 = playerinput
            if count == 3:
                answer3 = playerinput
            if count == 4:
                answer4 = playerinput    
            if count == 5:
                answer5 = playerinput 
            answers1 = [answer1, answer2, answer3, answer4, answer5]
            for word in lines:
                print(word)
            break

    
        if playerinput == 5:
            line3 = line3.replace('5', 'X')
            lines = [line1, line2, line3, line4, line5]
            if count == 1:
                answer1 = playerinput
            if count == 2:
                answer2 = playerinput
            if count == 3:
                answer3 = playerinput
            if count == 4:
                answer4 = playerinput    
            if count == 5:
                answer5 = playerinput      
            answers1 = [answer1, answer2, answer3, answer4, answer5]
            for word in lines:
                print(word)
            break

    
        if playerinput == 6:
            line3 = line3.replace('6', 'X')
            lines = [line1, line2, line3, line4, line5]
            if count == 1:
                answer1 = playerinput
            if count == 2:
                answer2 = playerinput
            if count == 3:
                answer3 = playerinput
            if count == 4:
                answer4 = playerinput    
            if count == 5:
                answer5 = playerinput        
            answers1 = [answer1, answer2, answer3, answer4, answer5]
            for word in lines:
                print(word)
            break


        if playerinput == 7:
            line5 = line5.replace('7', 'X')
            lines = [line1, line2, line3, line4, line5]
            if count == 1:
                answer1 = playerinput
            if count == 2:
                answer2 = playerinput
            if count == 3:
                answer3 = playerinput
            if count == 4:
                answer4 = playerinput    
            if count == 5:
                answer5 = playerinput     
            answers1 = [answer1, answer2, answer3, answer4, answer5]
            for word in lines:
                print(word)
            break


        if playerinput == 8:
            line5 = line5.replace('8', 'X')
            lines = [line1, line2, line3, line4, line5]
            if count == 1:
                answer1 = playerinput
            if count == 2:
                answer2 = playerinput
            if count == 3:
                answer3 = playerinput
            if count == 4:
                answer4 = playerinput    
            if count == 5:
                answer5 = playerinput    
            answers1 = [answer1, answer2, answer3, answer4, answer5]
            for word in lines:
                print(word)
            break

    
        if playerinput == 9:
            line5 = line5.replace('9', 'X')
            lines = [line1, line2, line3, line4, line5]
            if count == 1:
                answer1 = playerinput
            if count == 2:
                answer2 = playerinput
            if count == 3:
                answer3 = playerinput
            if count == 4:
                answer4 = playerinput    
            if count == 5:
                answer5 = playerinput        
            answers1 = [answer1, answer2, answer3, answer4, answer5]
            for word in lines:
                print(word)
            break

    while True:
        
        count2 += 1
        
        player2input = int(input())
    
        if player2input == 1:
            line1 = line1.replace('1', 'O')
            lines = [line1, line2, line3, line4, line5]
            if count2 == 1:
                p2answer1 = player2input
            if count2 == 2:
                p2answer2 = player2input
            if count2 == 3:
                p2answer3 = player2input
            if count2 == 4:
                p2answer4 = player2input    
            if count2 == 5:
                p2answer5 = player2input   
            answers2 = [p2answer1, p2answer2, p2answer3, p2answer4, p2answer5]
            for word in lines:
                print(word)
            break

        
        
        if player2input == 2:
            line1 = line1.replace('2', 'O')
            lines = [line1, line2, line3, line4, line5]
            if count2 == 1:
                p2answer1 = player2input
            if count2 == 2:
                p2answer2 = player2input
            if count2 == 3:
                p2answer3 = player2input
            if count2 == 4:
                p2answer4 = player2input    
            if count2 == 5:
                p2answer5 = player2input   
            answers2 = [p2answer1, p2answer2, p2answer3, p2answer4, p2answer5]            
            for word in lines:
                print(word)
            break

    
        if player2input == 3:
            line1 = line1.replace('3', 'O')
            lines = [line1, line2, line3, line4, line5]
            if count2 == 1:
                p2answer1 = player2input
            if count2 == 2:
                p2answer2 = player2input
            if count2 == 3:
                p2answer3 = player2input
            if count2 == 4:
                p2answer4 = player2input    
            if count2 == 5:
                p2answer5 = player2input   
            answers2 = [p2answer1, p2answer2, p2answer3, p2answer4, p2answer5]            
            for word in lines:
                print(word)
            break


        if player2input == 4:
            line3 = line3.replace('4', 'O')
            lines = [line1, line2, line3, line4, line5]
            if count2 == 1:
                p2answer1 = player2input
            if count2 == 2:
                p2answer2 = player2input
            if count2 == 3:
                p2answer3 = player2input
            if count2 == 4:
                p2answer4 = player2input    
            if count2 == 5:
                p2answer5 = player2input   
            answers2 = [p2answer1, p2answer2, p2answer3, p2answer4, p2answer5]            
            for word in lines:
                print(word)
            break

    
        if player2input == 5:
            line3 = line3.replace('5', 'O')
            lines = [line1, line2, line3, line4, line5]
            if count2 == 1:
                p2answer1 = player2input
            if count2 == 2:
                p2answer2 = player2input
            if count2 == 3:
                p2answer3 = player2input
            if count2 == 4:
                p2answer4 = player2input    
            if count2 == 5:
                p2answer5 = player2input   
            answers2 = [p2answer1, p2answer2, p2answer3, p2answer4, p2answer5]            
            for word in lines:
                print(word)
            break

    
        if player2input == 6:
            line3 = line3.replace('6', 'O')
            lines = [line1, line2, line3, line4, line5]
            if count2 == 1:
                p2answer1 = player2input
            if count2 == 2:
                p2answer2 = player2input
            if count2 == 3:
                p2answer3 = player2input
            if count2 == 4:
                p2answer4 = player2input    
            if count2 == 5:
                p2answer5 = player2input   
            answers2 = [p2answer1, p2answer2, p2answer3, p2answer4, p2answer5]            
            for word in lines:
                print(word)
            break


        if player2input == 7:
            line5 = line5.replace('7', 'O')
            lines = [line1, line2, line3, line4, line5]
            if count2 == 1:
                p2answer1 = player2input
            if count2 == 2:
                p2answer2 = player2input
            if count2 == 3:
                p2answer3 = player2input
            if count2 == 4:
                p2answer4 = player2input    
            if count2 == 5:
                p2answer5 = player2input   
            answers2 = [p2answer1, p2answer2, p2answer3, p2answer4, p2answer5]            
            for word in lines:
                print(word)
            break


        if player2input == 8:
            line5 = line5.replace('8', 'O')
            lines = [line1, line2, line3, line4, line5]
            if count2 == 1:
                p2answer1 = player2input
            if count2 == 2:
                p2answer2 = player2input
            if count2 == 3:
                p2answer3 = player2input
            if count2 == 4:
                p2answer4 = player2input    
            if count2 == 5:
                p2answer5 = player2input   
            answers2 = [p2answer1, p2answer2, p2answer3, p2answer4, p2answer5]            
            for word in lines:
                print(word)
            break

    
        if player2input == 9:
            line5 = line5.replace('9', 'O')
            lines = [line1, line2, line3, line4, line5]
            if count2 == 1:
                p2answer1 = player2input
            if count2 == 2:
                p2answer2 = player2input
            if count2 == 3:
                p2answer3 = player2input
            if count2 == 4:
                p2answer4 = player2input    
            if count2 == 5:
                p2answer5 = player2input   
            answers2 = [p2answer1, p2answer2, p2answer3, p2answer4, p2answer5]            
            for word in lines:
                print(word)
            break

I am trying to create a tic-tac-toe game in python.我正在尝试在 python 中创建井字游戏。 Right now, everything prints and works fine when the user inputs things but after the user enters all the inputs so the table is full, for some reason the program still asks for input so you can still enter numbers.现在,当用户输入内容时,一切都打印出来并且工作正常,但是在用户输入所有输入后,表格已满,由于某种原因,程序仍然要求输入,所以您仍然可以输入数字。 It doesnt print anything but its still annoying.它不打印任何东西,但它仍然很烦人。 How can I fix this?我怎样才能解决这个问题?

Because you stop at the end of turn 5, whereas player 2 has only 4 turns to play since there are 9 spots on the grid.因为您在第 5 回合结束时停止,而玩家 2 只有 4 回合可玩,因为网格上有 9 个位置。 So the last input is for player 2 to play one last time.所以最后一个输入是让玩家 2 最后一次播放一个。

Also please refactor this code !还请重构此代码! It is way too long for what it does它的作用太长了

Something like:就像是:

for i in range(1, 9):
    player = "x" if i % 2 == 0 else "o"
    playerinput = int(input())
    update_grid(grid, player, playerinput)
    if is_game_finished(grid):
         print(f"Player {player} has won")
         break

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM