python - 在 python 中永远无法达到 Else
问题描述
我只需要这样做:
获取用户输入的字符串并像前一阶段一样打印游戏网格。
分析游戏状态并打印结果。
像这样:
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")
解决方案
减少你的代码...
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 语句。
推荐阅读
- kubernetes - 使用 Minikube (k8s) + Calico 插件设置 pod IP
- java - 在java中创建给定大小和类型的文件
- python - 迭代完成后如何删除 tqdm 中的进度条
- c++ - 如何编码基于向量对的第一个元素具有向量对的第二个元素的上限
- networking - 应用程序的演示服务器会响应 ping 请求吗?
- excel - Cells.Find 并引用另一个工作簿
- javascript - 类型 '[boolean, Dispatch 上不存在属性 'current'
>]'.ts(2339) - ios - 根据按下的按钮更改表格视图标题
- frontend - 如何在 Svelte 中设置元素内容的样式?
- c# - 资源 (resx) 文件始终返回英文(默认)字符串