1
resposta

TypeError: marca_chute_certo() takes 0 positional arguments but 3 were given

import random


def imprime_mensagem_abertura():
    print('*****************************\nBem vindo ao jogo da forca\n*****************************')

def carrega_palavra_secreta():
    arquivo = open("palavras.txt", "r")
    lista_de_palavras = [linha.strip() for linha in arquivo]
    arquivo.close()
    numero = random.randrange(0,len(lista_de_palavras))
    palavra_secreta =  lista_de_palavras[numero].upper()
    return palavra_secreta

    def pede_chute():
    chute = input(f'Digite seu chute!').upper().strip()
    return chute

    def marca_chute_certo():
    index = 0
    for letra in palavra_secreta:
        if chute == letra:
            lista_letras_acertadas[index] = letra
            print(lista_letras_acertadas)
            index = index + 1
    return lista_letras_acertadas

    def jogar():
        imprime_mensagem_abertura()
        palavra_secreta = carrega_palavra_secreta()
        lista_letras_acertadas = ['_' for letra in palavra_secreta]

        enforcou = False
        ganhou = False
        erros = 0
        tentativas = len(lista_letras_acertadas)
        while not ganhou and not enforcou:
            chute = pede_chute()
            if chute in palavra_secreta:
            marca_chute_certo(chute,palavra_secreta,lista_letras_acertadas)

            else:
                erros += 1
                tentativas -= 1
                print(f'Cuidado, você só tem {tentativas} restantes')

            enforcou = erros == len(lista_letras_acertadas)
            ganhou = "_" not in lista_letras_acertadas
    print('Fim de jogo.')
    if ganhou == True:
        print('Parabéns, você ganhou!')
    elif enforcou == True:
        print(f'Você perdeu, a palavra era {palavra_secreta}')

if(__name__ == "__main__"):
    jogar()

Quando coloco esse código para rodar no VSCode, aparece o seguinte erro:

TypeError: marca_chute_certo() takes 0 positional arguments but 3 were given

Como resolver?

1 resposta

Boa noite! tenta trocar o def marca_chute_certo() por:

def marca_chute_certo(palavra_secreta, chute, lista_letras_acertadas):

você chamou essas três variáveis no seu def(), mas não colocou elas no parêntesis. Se não me engano é isso que "0 positional arguments but 3 were given" quer dizer (zero argumentos posicionais, mas três foram dados)

Me conta se deu certo, e eu espero ter ajudado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software