繁体   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

我正在尝试在 python 中创建井字游戏。 现在,当用户输入内容时,一切都打印出来并且工作正常,但是在用户输入所有输入后,表格已满,由于某种原因,程序仍然要求输入,所以您仍然可以输入数字。 它不打印任何东西,但它仍然很烦人。 我怎样才能解决这个问题?

因为您在第 5 回合结束时停止,而玩家 2 只有 4 回合可玩,因为网格上有 9 个位置。 所以最后一个输入是让玩家 2 最后一次播放一个。

还请重构此代码! 它的作用太长了

就像是:

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