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

Sei que a solução talvez seja simples, porém não encontrei forma de resolver :/ 'str' object is not callable

Boa noite!

No step de dar a opção de escolha de nível ao usuário, surge o erro 'str' object is not callable' apontando para a linha ** print ("tentativa {} de {}\n".format (rodada,total_tentativas))**

import random


print ("*************************")
print ("BEM VINDE")
print ("*************************")

numero_secreto   =  random.randrange(1,101) #essa função zera um número entre 0.0 e 1.0
total_tentativas =  0

print = ("Qual o nível de dificuldade?\n")
print = ("(1) Fácil\n(2) Médio\n (3) Difícil")
nivel_usuario = int(input("Escolha seu nível\n"))

if(nivel_usuario == 1):
    total_tentativas = 20
elif (nivel_usuario == 2):
    total_tentativas = 10
else:
    total_tentativas = 5

#while (rodada <= total_tentativas):#
for rodada in range(1,total_tentativas + 1):
    **print ("tentativa {} de {}\n".format (rodada,total_tentativas))**
    chute_str  = input ("Digite um número de 1 a 100\n") #input recebe info do usuário#
    print ("você digitou o número ",chute_str)
    chute = int (chute_str) #define que o tipo de chute_str será devolvido como int#

Imaginei que seria por conta da declaração da variável nivel_usuario como int, porém mesmo tirando esse format, não funcionou. Conseguem ajudar?

Muito obrigada!

4 respostas
solução!

Numa explicação rápida, nas linhas:

print = ("Qual o nível de dificuldade?\n")
print = ("(1) Fácil\n(2) Médio\n (3) Difícil")

Você diz que o print é igual a ("(1) Fácil\n(2) Médio\n (3) Difícil"). Ou seja, print deixa de ser uma função e passa a ser uma variável cujo valor armazenado é uma string.

Corrigindo o código fica:

print("Qual o nível de dificuldade?\n")
print("(1) Fácil\n(2) Médio\n (3) Difícil")

Sobre a lógica de conferir se o chute é o número aleatório, acredito que ainda esteja trabalhando nisso. Qualquer dúvida, é só avisar.

Depois avisa se deu certo.

Oi Karolyne. Tudo bem?

  1. O erro aconteceu por dois motivos:

Antes

Aqui você não usou a função print. Como você colocou o sinal de atribuição(=), acabou criando uma variável chamada print. Só precisa retirar e deixar igual aos demais.

print = ("Qual o nível de dificuldade?\n")
print = ("(1) Fácil\n(2) Médio\n (3) Difícil")

Agora

print("Qual o nível de dificuldade?\n")
print("(1) Fácil\n(2) Médio\n (3) Difícil")

[Editado] na verdade o seu modo também estava certo, eu que comi bola!

  1. Na penúltima linha, você esqueceu de colocar o .format

Antes

print ("você digitou o número ",chute_str)

Agora

print ("você digitou o número {}".format(chute_str))

F-Strings

Aproveitando, já existe um jeito mais fácil de concatenar texto + variável. Esse modo é conhecido como fstrings

Depois dá uma lida nesse artigo (será um investimento de 5 minutos): F-Strings

Espero ter ajudado! Bons estudos.

Boa noite, Karolyna! Tudo joia?

Analisando o seu código, percebi que nas linhas em que são apresentadas ao usuário as opções de dificuldade, há um sinal de = entre a palavra print e os parênteses da função.

Após a remoção dos dois sinais de igualdade - um em cada linha -, foi possível executar o código sem erros, conforme print abaixo: ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

Ademais, segue abaixo o código ajustado:

import random


print ("*************************")
print ("BEM VINDE")
print ("*************************")

numero_secreto   =  random.randrange(1,101) #essa função zera um número entre 0.0 e 1.0
total_tentativas =  0

print ("Qual o nível de dificuldade?\n")
print ("(1) Fácil\n(2) Médio\n (3) Difícil")
nivel_usuario = int(input("Escolha seu nível\n"))

if(nivel_usuario == 1):
    total_tentativas = 20
elif (nivel_usuario == 2):
    total_tentativas = 10
else:
    total_tentativas = 5

#while (rodada <= total_tentativas):#
for rodada in range(1,total_tentativas + 1):
    print ("tentativa {} de {}\n".format (rodada,total_tentativas))
    chute_str  = input ("Digite um número de 1 a 100\n") #input recebe info do usuário#
    print ("você digitou o número ",chute_str)
    chute = int (chute_str) #define que o tipo de chute_str será devolvido como int#

Espero ter ajudado. Bons estudos!!

Pessoal, muito obrigada pelas elucidações!! Funcionou pftamente.