1
resposta

Não sei porque o for não roda

Então, eu até consigo rodar tudo na primeira vez no laço, mas na segunda rodagem, o segundo for que pega a entrada do dinheiro não funciona e vai direto para o resultado. Só o primeiro for que acaba funcionando no while. E uma segunda duvida é, o que eu posso fazer para caso, o usuário coloque o valor 3 vezes errado, ele vá direto para o fim de jogo? Porque até então, mesmo ele colocando 3 vezes errado, ele só cai para o próximo for, sem ser penalizado.

import os
import random

print("                  ❆❆❆ ♡ ♥ ♢ ♦ ♤ ♠ ♧ ♣ ❆❆❆ ")
print(" ❆ Sonharas e Senhores, sejam bem vindos ao adivinhe se puder! ❆")
print("                  ❆❆❆ ♡ ♥ ♢ ♦ ♤ ♠ ♧ ♣ ❆❆❆ ")

banca = 100
aposta = 0
rodada = 1
tentativas = 0
total_tentativas = 4
valor_apostado = 0
teste = 0
teste_quantidade = 4


print("       ")
print(" - Olá jogador, eu escondi uma pedrinha, dentro de um desses copos...")
print(" - Será que você consegue adivinhar onde ela está?")
print(" - Mas como nada é de graça, que tal um minimo de  10 dinheirinhos, por tentativa?")
print("       ")

continuar = 1

while ( continuar == 1 and banca > 0 ):
    copos = random.randrange(1, 6)

    for tentativas in range (1, total_tentativas):
        print("       ")
        print("        ( 1 )  ( 2 )   ( 3 )  ( 4 )  ( 5 ) ")
        aposta = int(input(" - Escolha o seu copo: "))
        if (aposta < 1 or aposta > 5):
            print("Você está bebado? Não tem copo aí, tenta de novo!")
        else:
            break

    for teste in range(1, teste_quantidade):
        if(banca < valor_apostado or valor_apostado < 10):
            valor_apostado = int(input(" - Quantos dinheirinhos você quer apostar? "))
            print("       ")
        else:
            break

    if (aposta == copos):
        print(" - Uau..Sortudo não? Vamos continuar!")
        banca = banca + valor_apostado * 1.5
        print(banca)
        continuar = int(input("Continuar com o jogo? SIM ( 1 ) ou NÃO ( 2 ): "))
    elif (aposta != copos):
        print(" - Errou...Mas não desanime. Vamos, tente de novo!")
        banca = banca - valor_apostado
        print(banca)
        continuar = int(input("Continuar com o jogo? SIM ( 1 ) ou NÃO ( 2 ): "))

print("Fim de jogo!")
1 resposta

Boa noite Alex,

Analisando seu código creio que identifiquei o problema o qual não está sendo solicitado novamente o valor apostado. Isso ocorre pois no segundo laço do for como já foi recolhido o valor (imagine que na primeira vez eu apostei 10) a variável valor_apostado vai estar com esse valor e diante disso não entrará na condicional IF para solicitar o valor novamente. Para resolver esse problema, basta que quando ele cair na validação a qual ele errou, seja atribuído um valor 0 para a variável valor_apostado.

Em relação sua segunda dúvida, sobre o que poderia ser feito para caso ele erre 3 vezes, ele seja direcionado para o fim do jogo, existem algumas formas de se fazer. Para uma delas, podemos seguir os seguintes passo:

1 - Criar uma variável tentativas_restantes = 3

2 - A cada erro iremos diminuir uma unidade dessa variável.

3 - Antes de perguntar se o usuário quer continuar, fazemos uma validação se ainda existe tentativas restantes. Caso existe, perguntamos se ele quer continuar, caso não existe atribuímos o valor 2 a variável continuar, fazendo com que ele termine o primeiro while

Com as duas observações o código ficaria da seguinte forma:

import os
import random

print("                  ❆❆❆ ♡ ♥ ♢ ♦ ♤ ♠ ♧ ♣ ❆❆❆ ")
print(" ❆ Sonharas e Senhores, sejam bem vindos ao adivinhe se puder! ❆")
print("                  ❆❆❆ ♡ ♥ ♢ ♦ ♤ ♠ ♧ ♣ ❆❆❆ ")

banca = 100
aposta = 0
rodada = 1
tentativas = 0
total_tentativas = 4
***tentativas_restantes = 3***
valor_apostado = 0
teste = 0
teste_quantidade = 4


print("       ")
print(" - Olá jogador, eu escondi uma pedrinha, dentro de um desses copos...")
print(" - Será que você consegue adivinhar onde ela está?")
print(" - Mas como nada é de graça, que tal um minimo de  10 dinheirinhos, por tentativa?")
print("       ")

continuar = 1

while continuar == 1 and banca > 0:
    copos = random.randrange(1, 6)
    for tentativas in range(1, total_tentativas):
        print("       ")
        print("        ( 1 )  ( 2 )   ( 3 )  ( 4 )  ( 5 ) ")
        aposta = int(input(" - Escolha o seu copo: "))
        if (aposta < 1 or aposta > 5):
            print("Você está bebado? Não tem copo aí, tenta de novo!")
        else:
            break

    for teste in range(1, teste_quantidade):
        if(banca < valor_apostado or valor_apostado < 10):
            valor_apostado = int(input(" - Quantos dinheirinhos você quer apostar? "))
            print("       ")
        else:
            break

    if (aposta == copos):
        print(" - Uau..Sortudo não? Vamos continuar!")
        banca = banca + valor_apostado * 1.5
        valor_apostado = 0
        print(banca)
        continuar = int(input("Continuar com o jogo? SIM ( 1 ) ou NÃO ( 2 ): "))
    elif (aposta != copos):
        print(" - Errou...Mas não desanime. Vamos, tente de novo!")
        banca = banca - valor_apostado
        valor_apostado = 0
        tentativas_restantes = tentativas_restantes - 1
        print(banca)
        if tentativas_restantes > 0:
            continuar = int(input("Continuar com o jogo? SIM ( 1 ) ou NÃO ( 2 ): "))
        else:
            continuar = 2

print("Fim de jogo!")

Espero ter colaborado para a resolução da sua dúvida.