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

Como repetir o processo novamente quando acabar? Sem precisar recomeçar o script

Então, fiz umas coisas a mais do que o professor e um pouco diferentes... Não fiz níveis, mas estilos. Não fiz adivinhação, mas contas. Aqui está o meu código:

import random

random1 = random.randrange(0,11)
random2 = random.randrange(0,11)
maior = "Um pouco menos";
menor = "Um pouco mais";
tentativa = 3
chance = 1
jogando = 1
estilo = "+"
jogarDnv = 2

while jogando == 1:
    print("Você quer uma conta do quê?")
    modo = int(input("(1) soma, (2) multiplicação, (3) subtração: "))

    if modo == 1:
        resposta = random1 + random2
    elif modo == 2:
        resposta = random1 * random2;
        estilo = "x"
    elif modo == 3:
        resposta = random1 - random2;
        estilo = "-"
    elif modo > 3:
        print ("Desculpe não tenho essa opção...")
        continue;
    jogando = 2

while jogando == 2:
    jogando = 1
    for rodada in range (1, tentativa + 1):
        print("{} {} {} = ?".format(random1, estilo,random2))
        chute_str = input("a resposta é?: ");
        chute = int(chute_str);

        if chute > 100 :
            print ('nossa nada a vê .-.')
            continue;
        if (chute == resposta):
            print ("Você acertou miseravi!");
            break;
        else:
            if (chute > resposta):
                    print("Você errou mula! tentativa {} de {}".format(chance,tentativa));
                    if (chance > 3):
                        print("fim de jogo");
                        break;
                    else:
                        print(maior);
            elif(chute < resposta):
                print("Você errou mula! tentativa {} de {}".format(chance,tentativa));
                if (chance > 3):
                    print("fim de jogo");
                    break;
                else:
                    print(menor);

        chance = chance + 1
    jogarDnv = 1



while jogarDnv == 1:
    print("Quer jogar denovo?");
    jogoNovo = input("R: ");
    sim = 4;
    Sim = 4;
    s = 4
    não = 5;
    Não = 5;
    nao = 5;
    n = 5
    jogarDnv = 2

    if input == sim or s or Sim:
        jogando = 2;
    elif input == não or n or Não or nao:
        print ("Ok, até a próxima :)")
        jogando = 1
    else:
        print ("Desculpe, não entendi...");
        continue;

O que acontece é que quando eu falo sim (ou s ou Sim) o processo simplesmente finaliza. O que o programa passa:

Você quer uma conta do quê?
(1) soma, (2) multiplicação, (3) subtração: 3
8 - 3 = ?
a resposta é?: 5
Você acertou miseravi!
Quer jogar denovo?
R: sim

Process finished with exit code 0

Enfim, se tiver algum santo que pode me ajudar nisso eu vou agradecer muito :). A pergunta é: como fazer o processo acontecer novamente. Obrigado mesmo que tenha tentado :).

2 respostas
solução!

Ola Matheus vou tentar apresentar uma linha de raciocínio parecido com a que você está usando.

Se você começar um laço que envolve todo o seu código só para controlar se o jogador que jogar ou se ele quer sair

O código abaixo está funcionando mas é só um rascunho para você validar outras possibilidades (tinha um pequeno bug no código que você postou, se você fizer uma subtração ou multiplicação e depois tentar fazer um de soma, o a valor da variável estilo não estava voltando para +)

import random

chance = 1
deseja_jogar=int(input('Deseja jogar (1) sim, (2) não: '))
estilo=""
maior = "Um pouco menos";
menor = "Um pouco mais";
random1 = random.randrange(0,11)
random2 = random.randrange(0,11)
tentativa = 3

while deseja_jogar == 1:

    #aqui dentro você faz a sua logica do modo de jogo
    while deseja_jogar == 1:
        print("Você quer uma conta do quê?")
        modo = int(input("(1) soma, (2) multiplicação, (3) subtração, (4) voltar: "))
        if modo == 1:
            resposta = random1 + random2
            estilo = "+"
        elif modo == 2:
            resposta = random1 * random2;
            estilo = "x"
        elif modo == 3:
            resposta = random1 - random2;
            estilo = "-"
        elif modo == 4:
            deseja_jogar=int(input('Deseja jogar (1) sim, (2) não: '))
            continue;
        elif modo > 4 or modo <1:
            print ("Desculpe não tenho essa opção...")
            continue;

        #Como vc já está controlando o fluxo do menu se deseja jogar ou não vc não precisa de outro while
        for rodada in range (1, tentativa + 1):
            print("{} {} {} = ?".format(random1, estilo,random2))
            chute_str = input("a resposta é?: ");
            chute = int(chute_str);

            if chute > 100 :
                print ('nossa nada a vê .-.')
                continue;
            if (chute == resposta):
                print ("Você acertou miseravi!");
                break;
            else:
                if (chute > resposta):
                        print("Você errou mula! tentativa {} de {}".format(chance,tentativa));
                        if (chance > 3):
                            print("fim de jogo");
                            break;
                        else:
                            print(maior);
                elif(chute < resposta):
                    print("Você errou mula! tentativa {} de {}".format(chance,tentativa));
                    if (chance > 3):
                        print("fim de jogo");
                        break;
                    else:
                        print(menor);

            chance = chance + 1
print("Volte mais vezes")            

Ah entendi o conceito, não ficou muito claro mas peguei a ideia. Obrigado!