3
respostas

python - error indexação

olá, tudo bem? Não estou conseguindo prosseguir com este código, está aparecendo a seguinte mensagem:

"Traceback (most recent call last): File "python", line 17 print("Você deve digitar um número entre 1 e 100!")" ^ TabError: inconsistent use of tabs and spaces in indentation

print("********************************")
print("Bem vindo ao jogo de adivinhação")
print("********************************")

numero_secreto = 42
total_de_tentativas = 3

for rodada in range(1, total_de_tentativas):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas + 1))

    chute_str = input("Digite o seu número de 1 à 100: ")

    print("Você digitou: ", chute_str)

    chute = int(chute_str)

    if (chute < 1 or chute > 100):
        print("Você deve digitar um número entre 1 e 100!")


    acertou = numero_secreto == chute
    maior = chute > numero_secreto
    menor = chute < numero_secreto

    if (acertou):
        print("Você acertou!")
        break
    else:
        if (maior):
            print("Você errou! O seu chute foi maior que o número secreto.")
        elif (menor):
            print("Você errou! O seu chute foi menor que o número secreto.")

print("Fim do jogo")
3 respostas

Oi, Daniel! Tudo bem? O que acontece é que o Python, apesar de nos trazer muita liberdade em alguns aspectos, é muito rigoroso com a questão da identação (ou seja, dos espaços no começo da linha de blocos de código).

Repare que ao longo do seu código você usou, na maioria das vezes, TABs para identar. Entretanto, na linha 17 (print("Você deve digitar um número entre 1 e 100!")) você usou 4 espaços em vez de um TAB, e essa inconsistência acaba gerando um erro! Tente substituir esses 4 espaços dessa linha por um TAB, ou os TABs do seu código por 4 espaços, como é recomendado no PEP 8.

Olá, muito obrigado pelo posicionamento, mas continua dando problemas com identação: qual é a regra que devo estabelecer?

print("********************************")
print("Bem vindo ao jogo de adivinhação")
print("********************************")

numero_secreto = 42
total_de_tentativas = 3

for rodada in range(1, total_de_tentativas):
  print("Tentativa {} de {}".format(rodada, total_de_tentativas + 1))

    chute_str = input("Digite o seu número de 1 à 100: ")

  print("Você digitou: ", chute_str)

    chute = int(chute_str)

  if (chute < 1 or chute > 100):
      print("Você deve digitar um número entre 1 e 100!")


    acertou = numero_secreto == chute
    maior = chute > numero_secreto
    menor = chute < numero_secreto

  if (acertou):
        print("Você acertou!")
        break
    else:
  if (maior):
            print("Você errou! O seu chute foi maior que o número secreto.")
        elif (menor):
            print("Você errou! O seu chute foi menor que o número secreto.")

  print("Fim do jogo")

Daniel, é que você não está seguindo um padrão de identação no seu código! Nesse último que você mandou, às vezes você usa, para uma identação, dois espaços, às vezes quatro espaços, e às vezes um TAB. Eu recomendo que mude tudo ou para TAB ou para 4 espaços.