Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

50n3c4

Mago

Recommended Posts

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

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other sites
NuGuN

...Nunca percebi porque ensinam Python como se fosse C ou Pascal...

Quando dizes isso estas-te a referir a quê?

Cumps

Share this post


Link to post
Share on other sites
Kratos

Este code poderia ser mais resumido


"Vejo sempre além, pois me apóio em ombro de Gigantes"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.