Tic Tac Toe游戏:TypeError:“str”对象在尝试将字母更改为大写时不支持项目分配

2024-09-27 04:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个tic-tac-toe游戏,只是为了更好地吸收我在python编程中学习的概念

在我的代码中,我试图对大写字母进行字符替换,因为用户可以输入“meio-E”或“meio-E”,但我一直在输入错误“TypeError:'str'对象不支持项目分配”

以下是我试图改变的部分:

# Função que coloca as peças X no tabuleiro
def coloca_pecas_X(tabuleiro):
    desenha_tabuleiro(o_tabuleiro)
    print("Faça sua Jogada (topo, meio, baixo)-(E, M, D). Ex: topo-M")
    jogada = input()
    jogada[-1] = jogada[-1].upper()
    
    tabuleiro[jogada] = " X "

完整的错误消息如下所示:

    Traceback (most recent call last):
  File "D:\Usuário\Documents\Curso Python\jogo_da_veia.py", line 65, in <module>
    proxJogada()
  File "D:\Usuário\Documents\Curso Python\jogo_da_veia.py", line 57, in proxJogada
    coloca_pecas_X(o_tabuleiro)
  File "D:\Usuário\Documents\Curso Python\jogo_da_veia.py", line 33, in coloca_pecas_X
    jogada[-1] = jogada[-1].upper()
TypeError: 'str' object does not support item assignment

如果有人能帮助我,我将不胜感激

完整代码:

# Jogo da velha
# Autor: Arthur Silva
# Data: 11/08/2020

o_tabuleiro = {
    "topo-E": "  ",
    "topo-M": "  ",
    "topo-D": "  ",
    "meio-E": "  ",
    "meio-M": "  ",
    "meio-D": "  ",
    "baixo-E": "  ",
    "baixo-M": "  ",
    "baixo-D": "  ",
}

# Função que desenha o tabuleiro
def desenha_tabuleiro(tabuleiro):
    print(tabuleiro["topo-E"] + "|" + tabuleiro["topo-M"] + "|" + tabuleiro["topo-D"])
    print("--------")
    print(tabuleiro["meio-E"] + "|" + tabuleiro["meio-M"] + "|" + tabuleiro["meio-D"])
    print("--------")
    print(
        tabuleiro["baixo-E"] + "|" + tabuleiro["baixo-M"] + "|" + tabuleiro["baixo-D"]
    )


# Função que coloca as peças X no tabuleiro
def coloca_pecas_X(tabuleiro):
    desenha_tabuleiro(o_tabuleiro)
    print("Faça sua Jogada (topo, meio, baixo)-(E, M, D). Ex: topo-M")
    jogada = input()
    jogada[-1] = jogada[-1].upper()
    
    tabuleiro[jogada] = " X "
    desenha_tabuleiro(o_tabuleiro)
    print("\n\n\n\n")


# Função que coloca as peças O no tabuleiro
def coloca_pecas_O(tabuleiro):
    desenha_tabuleiro(o_tabuleiro)
    print("Faça sua Jogada (topo, meio, baixo)-(E, M, D). Ex: topo-M")
    jogada = input()
    jogada[-1] = jogada[-1].upper()
    
    tabuleiro[jogada] = " O "
    desenha_tabuleiro(o_tabuleiro)
    print("\n\n\n\n")


def proxJogada():
    contador = 1
    while contador == 1 or contador == -1:
        if contador == 1:
            print("Sua vez, X")
            coloca_pecas_X(o_tabuleiro)
            contador = contador * -1
        else:
            print("Sua vez, O")
            coloca_pecas_O(o_tabuleiro)
            contador = contador * -1


proxJogada()

请注意,该说明尚未完成,因为我希望消除这一疑虑


Tags: defasupperquemeioprintfuntopo
1条回答
网友
1楼 · 发布于 2024-09-27 04:22:43

字符串是不可修改的对象

但您可以使用,而不是尝试更改字符,例如:

str = "lA lEchCe"

str = str.lower()

所以,更改整个字符串

相关问题 更多 >

    热门问题