为什么我的程序挂了

摩根哈里森
from random import *

IQ = []
row1 = ["#", "#", "#"]
row2 = ["#", "#", "#"]
row3 = ["#", "#", "#"]
board = [row1, row2, row3]


def Display_Board():
    print(row1[0],"|", row1[1], "|", row1[2])
    print("----------")
    print(row2[0],"|", row2[1], "|", row2[2])
    print("----------")
    print(row3[0],"|", row3[1], "|", row3[2])

def Automated_Move(board):
    while True:
        RandomMove = randint(0,2)
        if board[RandomMove][RandomMove] == "#":
            board[RandomMove][RandomMove] = "O"
            break
        elif board[RandomMove][RandomMove] != "#":
            pass

while True:
    #print(IQ)
    Display_Board()
    Row = int(input("Row: ")) - 1
    Col = int(input("Col: ")) - 1
    if board[Row][Col] != "X" and board[Row][Col] != "O":
        board[Row][Col] = "X"
        IQ.append(Row)
        IQ.append(Col)
    elif board[Row][Col] == "X" or board[Row][Col] == "O":
        print("This is already Taken")
        pass

    Automated_Move(board)
    print("\n")

我正在尝试制作一个简单的基于遗传算法的井字游戏,但我不知道它为什么会崩溃。我发现它在 Automated_Move 函数的循环中(如果有帮助)

AGN凝视者

你的主循环永远不会结束。没有break在:

while True:
    #print(IQ)
    Display_Board()
    Row = int(input("Row: ")) - 1
    Col = int(input("Col: ")) - 1
    if board[Row][Col] != "X" and board[Row][Col] != "O":
        board[Row][Col] = "X"
        IQ.append(Row)
        IQ.append(Col)
    elif board[Row][Col] == "X" or board[Row][Col] == "O":
        print("This is already Taken")
        pass

    Automated_Move(board)
    print("\n")

此外,您的Automated_Move()'swhile循环也迟早会进入永远循环。

def Automated_Move(board):
    while True:
        RandomMove = randint(0,2)
        if board[RandomMove][RandomMove] == "#":
            board[RandomMove][RandomMove] = "O"
            break
        elif board[RandomMove][RandomMove] != "#":
            pass

仅当有'#'元素 in board(将该元素更改为 之后O)时此循环才会中断经过几次迭代, 的所有(对角线)元素都board将是'O',因此循环将永远不会退出。

一种可能的解决方案是将主循环修改为:

if any(['#' in r for r in board]):
    Automated_Move(board)
else:
    break

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么这个使用 BPF 和 RAW SOCKET 的程序就挂了?

来自分类Dev

为什么“ cat / dev / urandom”挂了我的bash脚本?

来自分类Dev

为什么我的异步mongodb查询功能挂了?

来自分类Dev

为什么 GNU make 进程挂了?

来自分类Dev

为什么这个函数挂了 REPL?

来自分类Dev

为什么所有快照进程都挂了?

来自分类Dev

为什么我的程序“停止”了?

来自分类Dev

为什么我的程序什么也不返回?

来自分类Dev

为什么我的程序循环太多?

来自分类Dev

为什么我的程序不等待输入?

来自分类Dev

为什么SocketTimeoutException使我的程序冻结?

来自分类Dev

为什么我的处理程序不执行?

来自分类Dev

为什么我的程序抛出StringIndexOutOfBounds异常?

来自分类Dev

为什么我的pymunk程序太慢了?

来自分类Dev

为什么我的程序不接受减法?

来自分类Dev

为什么我听到此程序的哔哔声?

来自分类Dev

为什么我的C程序崩溃?

来自分类Dev

为什么我的程序不打印nextLine?

来自分类Dev

为什么我的程序在#之后忽略参数?

来自分类Dev

为什么我的C ++程序崩溃了?

来自分类Dev

为什么我的应用程序崩溃了?

来自分类Dev

为什么我的程序仅返回零?

来自分类Dev

为什么我的“ Circle”程序无法运行?

来自分类Dev

为什么我的程序只是挂起?

来自分类Dev

为什么我的程序返回相同的字符?

来自分类Dev

为什么我的haskell程序太慢?

来自分类Dev

为什么SocketTimeoutException使我的程序冻结?

来自分类Dev

为什么我的程序忽略了switch语句?

来自分类Dev

为什么我的程序返回“ 0.0”?