Olá,
Vamos por partes:
a. Vocês que tem mais experiência, poderiam avaliar o código?
R: Se você quiser chamar suas funções "numero_correto_acertou" e "numero_correto_errou", teria que fazer uma adaptação no seu código:
#Apresentação do jogo
print(f'*'*5)
print(f'Bem vindo ao Jogo da Adivinhação!')
print(f'*'*5)
#Variáveis utilizadas no jogo
numero_secreto_1 = 5
tentativas_restantes = 3
rodadas = 1
while (rodadas <= tentativas_restantes):
print("Tentativa {} de {} tentativas restantes".format(rodadas, tentativas_restantes))
numero = int(input(f'Digite um número de 0 até 10: '))
numero_correto_acertou() # se não usar o () no final, não chama a função
numero_correto_errou() # se não usar o () no final, não chama a função
rodadas = rodadas + 1
O código acima não está dos mais eficientes e não segue "boas práticas", mas depois explico.
b. Quero usar os conceitos de break e continue que, pelo que eu li, só podem ser usados dentro de um loop. Ele funcionaria nessa estrutura?
R: Sim, porém para isso seria necessário mudar sua função de validação, pq atualmente ela não retorna nada para você, poderia ser algo do tipo:
def numero_correto_acertou():
return numero == numero_secreto_1 # sua função agora retorn "True" quando você acerta o número e "False" quando você erra
def numero_correto_errou():
if numero > numero_secreto_1:
print(f'O seu número é maior do que o nosso!')
else:
numero < numero_secreto_1
print(f'O seu número é menor do que o nosso!')
#Apresentação do jogo
print(f'*'*5)
print(f'Bem vindo ao Jogo da Adivinhação!')
print(f'*'*5)
#Variáveis utilizadas no jogo
numero_secreto_1 = 5
tentativas_restantes = 3
rodadas = 1
while (rodadas <= tentativas_restantes):
print("Tentativa {} de {} tentativas restantes".format(rodadas, tentativas_restantes))
numero = int(input(f'Digite um número de 0 até 10: '))
if numero_correto_acertou(): # se você acertar, a função retorna True e entra no if
print(f'Parabéns! Você acertou!')
break # como você acertou, o break sai do while
else: # se você errou, a função abaixo é chamada
numero_correto_errou()
rodadas = rodadas + 1
c. O código está parando na tentativa 2. Quando eu acerto o número, ele também não fornece o print afirmando que o jogador acertou
R: O print não funciona pelo que comentei acima, você não está chamado a função da forma correta, pois não colocou () no final.
Em todo caso, você não passa parâmetros para a sua função, e isso faz com que sua variável tenha que ser declarada antes, uma opção que deixa seu código mais "clean" e próximo das boas práticas seria o abaixo:
# parece que é a mesma coisa, mas sua função atual utiliza variáveis dentro dela que precisam ser declaradas em outro lugar, ou seja,
# se você executar o código fora de ordem ela não funcionaria. Da forma abaio sua função sempre vai funcionar, pois as variáveis sempre serão passadas
def valida_numero(numero, numero_secreto):
return numero == numero_secreto # retorna True se você acertar o número
# aqui eu só ajustei o nome para "recebe_dica", pense que daqui alguns anos você vai ler esse código e é bom que o nome da função
# te dê clareza sobre o que a função faz. Passar as variáveis como parâmetro é pelo mesmo motivo anterior
def recebe_dica(numero, numero_secreto):
if numero > numero_secreto:
print(f'O seu número é maior do que o nosso!')
else:
numero < numero_secreto
print(f'O seu número é menor do que o nosso!')
#Apresentação do jogo
print(f'*'*5)
print(f'Bem vindo ao Jogo da Adivinhação!')
print(f'*'*5)
#Variáveis utilizadas no jogo
numero_secreto = 5
total_de_tentativas = 3 # na verdade esse é o total de tentativas, sempre é bom deixar o nome da variável muito próximo do que ele significa
rodadas = 1
while (rodadas <= total_de_tentativas):
print("Tentativa {} de total de {} tentativas".format(rodadas, total_de_tentativas))
numero = int(input(f'Digite um número de 0 até 10: ')) # apesar de pedir para ser entre 0 e 10, você não valida, poderia implementar um validador
if valida_numero(numero, numero_secreto):
print(f'Parabéns! Você acertou!')
break # como você acertou, o break sai do while
else:
recebe_dica(numero, numero_secreto)
rodadas = rodadas + 1
O código sempre pode ser melhorado, e com o tempo você vai começar a perceber mais rápido as melhores práticas.
Abs!