首页 > 解决方案 > 在 python 中永远无法达到 Else

问题描述

我只需要这样做:

  1. 获取用户输入的字符串并像前一阶段一样打印游戏网格。

  2. 分析游戏状态并打印结果。

像这样:

1. Enter cells: XXXOO__O_    ---------  
| X X X |  
| O O _ |  
| _ O _ |    ---------
 X wins

问题是我的程序永远不会到达 elif 语句,我不知道为什么。

n = input()
number_grid = []
Winner = ""
print("---------")
Cont = {"X": 0, "O": 0, "_": 0}   # This will count to check for impossible games
for i in range(0, len(n), 3):
    print("|", n[i], n[i+1], n[i+2], "|")
    number_grid.append([n[i], n[i+1], n[i+2]])
    Cont[n[i]] = Cont[n[i]] + 1
    Cont[n[i + 1]] = Cont[n[i + 1]] + 1
    Cont[n[i + 2]] = Cont[n[i + 2]] + 1
print("---------")

Impossible = False
if 2 <= Cont["X"] - Cont["O"] or Cont["X"] - Cont["O"] <= -2:
    Impossible = True
    print("Impossible")
    exit()
if Winner == "" and Impossible is False:
    for rows in range(0, 3):    # Check winner in rows
        if number_grid[rows][0] == number_grid[rows][1] == number_grid[rows][2] != "_":
            Winner = number_grid[rows][0]
            print(Winner, "wins")
    for columns in range(0, 3):  # Check winner in columns
        if number_grid[0][columns] == number_grid[1][columns] == number_grid[2][columns] != "_":
            Winner = number_grid[0][columns]
            print(Winner, "wins")
    if number_grid[0][0] == number_grid[1][1] == number_grid[2][2] != "_":  # Check winner in first diagonal
        Winner = number_grid[0][0]
        print(Winner, "wins")
    if number_grid[0][2] == number_grid[1][1] == number_grid[2][0] != "_":  # Check winner in second diagonal
        Winner = number_grid[0][2]
        print(Winner, "wins")
elif Cont["_"] != 0:
    print("Game not finished")
elif Cont["X"] + Cont["O"] == 9:
    print("Draw")

标签: python

解决方案


减少你的代码...

Winner = ""
Impossible = False
if Winner == "" and Impossible is False:
    # Stuff
elif Cont["_"] != 0:
    print("Game not finished")
elif Cont["X"] + Cont["O"] == 9:
    print("Draw")

Winner != ""在您当前的代码中, or 是不可能的Impossible != True。所以你永远不会输入 elif 语句。


推荐阅读