做Python测试

2024-06-16 11:16:10 发布

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

我正在做一个项目,这是一个小测验填补空白,我有一个错误,我不能确定。在我没有对一个空白做出回应之后,测验没有显示应该出现的短语,并且出现了一个错误。有人能帮我吗?我尝试过一些事情,但什么都没有发生,总是当一次尝试命中是错误的,它会显示错误,而不是显示球员仍然有多少尝试或他已经失去了。 遵循以下准则: 注:代码在PT\ BR中

# coding=utf-8
# Meu quiz

print ("Escolha o nível de dificuldade para o seu jogo. Digite F para fácil, M para médio, ou D para difícil.")


# Lista do total de tentativas já feitas
count_list = []

perguntas = [
    "Digite a palavra que corresponde ao espaço 0: ",
    "Digite a palavra que corresponde ao espaço 1: ",
    "Digite a palavra que corresponde ao espaço 2: ",
    "Digite a palavra que corresponde ao espaço 3: "
]


def verificacao(frase, gabarito, tentativas):
    # Verificação das palavras do jogo com contabilização
    print
    print (frase)
    print

    index = 0

    while len(count_list) < tentativas and index < (tentativas + 1):
        pergunta = input(perguntas[index]).lower()

        if index == tentativas and pergunta == gabarito[index]:
          print
          print ("Parabéns! Você ganhou!")
          break

        if pergunta == gabarito[index]:
            print
            print ("Você acertou!")
            print
            frase = frase.replace(str(index), gabarito[index])
            print (frase)
            index += 1
            print

        else:
            count_list.append(1)
            print
            print ("Você errou. Você tem mais") + str(
                tentativas - len(count_list)) + "tentativa(s)."
            print

            if len(count_list) == tentativas:
                print ("Você perdeu.")
                break    


# Variáveis do jogo
frase_facil = "Água __0__, pedra __1__, tanto __2__ até que __3__."
frase_medio = "De __0__, poeta e __1__, todo __2__ tem um __3__."
frase_dificil = "Um __0__, de exemplos __1__ mais que uma __2__ de __3__."

frases = [frase_facil, frase_medio, frase_dificil]

gabarito_facil = ['mole', 'dura', 'bate', 'fura']
gabarito_medio = ['medico', 'louco', 'mundo', 'pouco']
gabarito_dificil = ['grama', 'vale', 'tonelada', 'conselhos']

gabaritos = [gabarito_facil, gabarito_medio, gabarito_dificil]


def attempts():
    # Verifica se a tentativas informada é válida, e retorna apenas se o valor for válido
    while True:
        try:
            tentativas = int(
                input("Quantas tentativas que você quer ter? "))
            return tentativas
            break
        except ValueError:
            print("Você precisa digitar um número. Tente outra vez.")
            continue


while True:
    # Pega o input do usuário sobre o nível de dificuldade e número de tentativas desejada, para iniciar o quiz correto com a dificuldade correta.
    nivel_dificuldade = input("Nível de dificuldade: ")
    tentativas = attempts()

    if nivel_dificuldade.lower() == "f" or nivel_dificuldade.lower(
    ) == "facil" or nivel_dificuldade.lower() == "fácil":
        verificacao(frase_facil, gabarito_facil, tentativas)
        break
    elif nivel_dificuldade.lower() == "m" or nivel_dificuldade.lower(
    ) == "medio" or nivel_dificuldade.lower() == "médio":
        verificacao(frase_medio, gabarito_medio, tentativas)
        break
    elif nivel_dificuldade.lower() == "d" or nivel_dificuldade.lower(
    ) == "dificil" or nivel_dificuldade.lower() == "difícil":
        verificacao(frase_dificil, gabarito_dificil, tentativas)
        break
    print ("Para escolher a dificuldade do seu quiz, você precisa apertar F, M ou D. Tente novamente.")

Tags: indexdevoclowerqueprintbreakfacil
1条回答
网友
1楼 · 发布于 2024-06-16 11:16:10

问题

问题在于您发布的代码的第46行,在第一个while循环的else块中。本部分:

print ("Você errou. Você tem mais") + str(
    tentativas - len(count_list)) + "tentativa(s)."

因为您关闭了"Você errou. Você tem mais"周围的括号,所以只打印该字符串。然后尝试将print的结果与下一个字符串(str(tentativas - len(count_list)))连接起来,因此得到错误:

TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

因为print不返回任何内容(即None)。你知道吗

解决方案

要解决这个问题,只需将第一个右括号放在行的末尾,这样所有的字符串连接都在括号内完成,并打印出整个结果。你知道吗

下面是它的样子:

print ("Você errou. Você tem mais" + str(
      tentativas - len(count_list)) + "tentativa(s).")

相关问题 更多 >