Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

50n3c4

Mago

Mensagens Recomendadas

50n3c4

Boas. Eu preciso de fazer um programa que consiste em:

O utilizador escolhe um numero de 0 a 100, depois o programa faz um random de 0 a 100, diz um numero e o utilizador diz se acertou ou não e se não acertou dizemos se o numero que queremos é maior ou menor. O código é este:

#Programa Mago

import random
index=1
nmax=100
nmin=0
valinicial= random.randint (1, 100)
print valinicial
simnao=raw_input("Acertei no numero? (S/N)")
while (simnao=="N") or (simnao=="n") or (simnao=="Nao") or (simnao=="Não") or (simnao=="nao") or (simnao=="não"):
    c=raw_input ("Introduza se o valor e maior ou menor que o pretendido. (<,>)")
    if (c==">") or (c=="maior") or (c=="Maior"):
        nmin=valinicial+1
        d= random.randint (nmin, nmax)
        valinicial=d
        print d
        simnao=raw_input("Acertei no numero? (S/N)")
    elif (c=="<") or (c=="menor") or (c=="Menor"):
        nmax=valinicial-1
        d= random.randint (nmin, nmax)
        valinicial=d
        print d
        simnao=raw_input("Acertei no numero? (S/N)")
    else:
        print "O valor introduzido nao e valido"
    index=index+1
if (simnao=="S") or (simnao=="s") or (simnao=="Sim") or (simnao=="sim"):
    print "Sou o maior"
else:
    print "O valor introduzido nao e valido"  
print "Eu precisei de ",index," tentativas para adivinhar o número pretendido"

O problema que tenho é que quando o programa pergunta se eu acertei no numero e eu responder alguma coisa sem ser "sim" ou "não" o programa termina e não faz novamente a pergunta.

Alguém me pode ajudar?

Cumps

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Tens de ter a pergunta num loop do qual só sais quando o utilizador escolhe sim ou não.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoRodrigues

Há muita coisa que podes mudar nesse código para isso ficar mais limpo. Nunca percebi porque ensinam Python como se fosse C ou Pascal...

On topic! O M6 disse tudo, precisas de enfiar isso TUDO num while, e quando o utilizador quiser sair digita tipo S ou Q em vez de um numero.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
50n3c4

Obrigado a todos, eu já consegui resolver. Aqui fica o código:

#Programa Mago

import random

listaSim=["S", "s", "Sim", "sim"]
listaNao=["N", "n", "Não", "não", "Nao", "nao"]
listamaior=[">", "maior", "Maior"]
listamenor=["<", "menor", "Menor"]

numeroAdivinhar = input("Qual o numero para o computador adivinhar? (o computador nao vai saber este numero) :")

index=1
nmax=100
nmin=0

valinicial= random.randint (1, 100)
print valinicial
simnao=raw_input("Acertei no numero? (S/N)")
while (listaSim.count(simnao) <= 0 and listaNao.count(simnao) <= 0):
    simnao=raw_input("Resposta invalida! Acertei no numero? (S/N)")  
while (listaNao.count(simnao)):
    c=raw_input ("Introduza se o valor e maior ou menor que o pretendido. (<,>)")
    if (listamaior.count(c)):
        nmin=valinicial+1
        d= random.randint (nmin, nmax)
        valinicial=d
        print d
    elif (listamenor.count(c)):
        nmax=valinicial-1
        d= random.randint (nmin, nmax)
        valinicial=d
        print d
    else:
        print "O valor introduzido nao e valido"
    index=index+1
    simnao=raw_input("Acertei no numero? (S/N)")
    while (listaSim.count(simnao) <= 0 and listaNao.count(simnao) <= 0):
        simnao=raw_input("Resposta invalida! Acertei no numero? (S/N)")
print "Eu precisei de ",index," tentativas para adivinhar o número pretendido"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoRodrigues

Uma das forças de Python é ter mil e uma bibliotecas que poupam trabalho à malta. Para ensinarem este tipo de programação mais "baixo nivel", acho eu que era preferível ensinarem C. Se é para ensinar programação, ensina-se direito com uma linguagem base.

E @Kratos claro que o código podia ser mais resumido, mas para quem está a aprender, é melhor assim :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NuGuN

Sim tens razão...começar com python talvez não seja a melhor forma. Não estava a perceber ao que te estavas a referir  :(

Cumps

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.