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

问题描述

我正在制作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,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,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()

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

解决方法

字符串是不可修改的对象。

但是您可以使用类似以下内容的方法来代替尝试更改字符:

str = "lA lEchCe"

str = str.lower()

因此,请更改整个字符串。