Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Error message: 'tuple object is not callable'

Olá!

Eu novamente com muitas dúvidas e problemas. Dessa vez vem esse tal de"tuple object is not callable". Vi que se trata de colocação de parêntesis e coisas assim relacionadas, mas entendi é nada. Segue o código aqui já com o .random e números pseudoaleatórios.

import random

print ("**********************************")
print ("Bem-vindo ao jogo de Adivinhação! ")
print ("**********************************")

numero_secreto = random.randrange (1,101)
tentativas = 3
rodada=1

for rodada in range (1, tentativas +1):
    print("Tentativa {} de {}".format (rodada, tentativas))
    chute = int(input("Digite um número entre 1 e 100: "))
    print = ("Você digitou" , chute)
    numero_secreto = 26
    if chute <1 or chute > 100:
        print ("Digite um número entre 1 e 100: ")
        continue
    if numero_secreto == chute:
        print ("Parabéns! Você acertou!")
        break
    else:
        if (chute > numero_secreto):
            print("Não foi dessa vez. Seu chute foi MAIOR que o número secreto...")
        elif (chute < numero_secreto):
            print("Não foi dessa vez. Seu chute foi MENOR que o número secreto...")
print ("Fim de jogo")
2 respostas
solução!

Olá Nicholas, tudo bem com você?

A mensagem TypeError: 'tuple' object is not callable está aparecendo devido a um erro de digitação, onde foi adicionado um sinal de igualdade (=) após a declaração da função print. Assim, o código está tentando fazer uma atribuição de valores (uma tupla) a uma variável de nome print, gerando o conflito por ser um nome de uma função interna do Python.

Para corrigir o erro, dentro do laço for na segunda chamada da função print, remova o sinal de igualdade que está entre o print e o parênteses. Deixando como apresentado abaixo.

print("Você digitou" , chute)

Após a mudança, salve o arquivo e execute-o.

Código completo com a mudança já aplicada

import random

print("**********************************")
print("Bem-vindo ao jogo de Adivinhação! ")
print("**********************************")

numero_secreto = random.randrange(1, 101)
tentativas = 3
rodada = 1

for rodada in range(1, tentativas + 1):
    print("Tentativa {} de {}".format(rodada, tentativas))
    chute = int(input("Digite um número entre 1 e 100: "))
    print("Você digitou", chute)
    numero_secreto = 26
    if chute < 1 or chute > 100:
        print("Digite um número entre 1 e 100: ")
        continue
    if numero_secreto == chute:
        print("Parabéns! Você acertou!")
        break
    else:
        if (chute > numero_secreto):
            print("Não foi dessa vez. Seu chute foi MAIOR que o número secreto...")
        elif (chute < numero_secreto):
            print("Não foi dessa vez. Seu chute foi MENOR que o número secreto...")
print("Fim de jogo")

Uma observação, no seu código a variável numero_secreto está recebendo o valor de 26 dentro do laço for, isso retira a aleatoriedade do código. Caso queira que o número secreto seja aleatório, basta remover a linha numero_secreto = 26.

Lembre-se que pode contar sempre com o fórum Alura, seja para tirar suas dúvidas ou compartilhar o seu desenvolvimento.

Espero ter ajudado. Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Opa Felippe!

Pouts... rapaz, que erro Crasso. Essa igualdade estava aí de bobeira e nem vi, o corretor automático do meu cérebro já tirou da minha atenção rsrsrsrsrs.

Grato pelo tempo dispendido e pela resposta.

Ah! sim, eu retirei a linha do número secreto = 26. É que eu estava tão irritado com esse erro da minha postagem que nem me atrevi a relero código. Mas agora funcionou lindamente.

Abraços

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