Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Mão na Massa: Usando For

Para diversificar fiz o jogo em inglês e inclui um criador de numeros randomicos utilizando a lib random

import random


print(34*"'")
print("|  Welcome to the Guessing Game  | ")
print(34*"'")

# Criando e selecionando o numero secreto de forma randomica
secret_number = random.randrange(1, 50)

total_try = 5

print("What is the secret number?")

for tentativa in range(1, total_try + 1):
    print(f"Round {tentativa} of {total_try} rounds")
    chute_str = input("Choose a number between 1 and 50?")
    chute = int(chute_str)
    if(chute < 1 or chute > 50):
        print("Invalid, you must to choose a number between 1 and 50. Unfurtunately you lost a choice")
        continue
    if(chute == secret_number):
        print("Amazing! You got it right")
        break
    else:
        if(chute > secret_number and tentativa < 5):
            print("Too bad, but you were wrong. The secret number is smaller.")
        elif(chute < secret_number and tentativa < 5):
            print("Too bad, but you were wrong. The secret number is bigger.")
        elif(chute > secret_number or chute < secret_number and total_try >= 5):
            print("Sorry, but you were wrong. The game is over.")
1 resposta
solução!

Olá Leonardo, tudo bem com você?

Meus parabéns pela implementação do código usando a biblioteca random. Continue assim buscando sempre expandir o seu conhecimento.

Quando estamos usando o .randrange() devemos informar o início e o final do intervalo, podemos definir também o step o valor que vai ser incrementado, por padrão é considerado o valor “1”.

Um ponto de destaque sobre os valores de início e fim. O valor de início é um valor inclusivo, o valor fornecido será considerado para formar o intervalo; já o valor de fim é exclusivo, o intervalo será formado até o valor fornecido sem contar esse valor.

No seu código é pedido que o usuário informe um valor entre 1 e 50, como vimos anteriormente o 50 não será escolhido como número secreto, para que ele possa ser escolhido como número secreto, devemos informar que o valor final do intervalo será o 51:

secret_number = random.randrange(1, 51)

Recomendo a leitura do seguinte artigo, que fala sobre o uso do random.randrange() e seus principais erros, o artigo está em inglês, caso tenha dificuldades com o idioma, recomendo o uso do tradutor do navegador:

Existe uma inversão de lógica no código, quando o usuário informa um valor menor que o número secreto é apresentado uma mensagem falando que o usuário informou um valor maior; o inverso acontece quando é informado um valor maior, para modificar basta trocar os sinais de maior e menor (< e >) na comparação entre a variável chute e secret_number;

Código antigo


        if(chute > secret_number and tentativa < 5):
            print("Too bad, but you were wrong. The secret number is smaller.")
        elif(chute < secret_number and tentativa < 5):
            print("Too bad, but you were wrong. The secret number is bigger.")

Código modificado


        if(chute < secret_number and tentativa < 5):
            print("Too bad, but you were wrong. The secret number is smaller.")
        elif(chute > secret_number and tentativa < 5):
            print("Too bad, but you were wrong. The secret number is bigger.")

Sobre o uso do idioma em inglês, é recomendado como boa prática de programação a padronização do idioma, tente sempre manter um padrão, no seu código possui duas variáveis em português: chute e tentativa; como o objetivo é criar um código usando o inglês, é recomendado modificar elas para o inglês.

Continue assim, compartilhando o seu aprendizado e buscando cada dia mais por novos conhecimentos.

Caso tenha alguma dúvida coloco-me à disposição.

Abraços e bons estudos.