Jump to content

responder em quantos numeros aletarios um utilizador acertou


msmsms
 Share

Recommended Posts

pretendo fazer um programa que permita receber do utilizador 5 numeros, gere outros 5 numeros aletarios e diga em quantos numeros o utilizador acertou

comecei por fazer um conjunto de condições através da instrução de fluxo if mas não me parece ser a melhor solução

podem-me dizer o melhor caminho para resolver este caso?

import random
def sorteio():

   n1=input('n1:')
   n2=input('n2:')
   n3=input('n3:')
   n4=input('n4:')
   n5=input('n5:')

   b1=random.randint(1,10)
   b2=random.randint(1,10)
   b3=random.randint(1,10)
   b4=random.randint(1,10)
   b5=random.randint(1,10)
   b6=random.randint(1,10)
   if n1 == (b1 or b2 or b3 or b4 or b5):
       if n2 == (b1 or b2 or b3 or b4 or b5):
           if n3 == (b1 or b2 or b3 or b4 or b5):
           else:
               print 3
       else:
           print 2
   else:
       print 1

       # isto assim vai dar uma trabalheira


if __name__=='__main__':
   sorteio()

Edited by brunoais
geshi
Link to comment
Share on other sites

Em vez de:

if n1 == (b1 or b2 or b3 or b4 or b5):

podes sempre usar:

if n1 in [b1, b2, b3, b4, b5]:

O q tens está bem, só estou a mostrar uma alternativa.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

Olá. O ideal é mesmo utilizares ciclos e os objectos nativos do Python (como por exemplo as listas) dado a sua flexibilidade. O código seguinte faz precisamente isto:

import numpy as np

def sorteio(numero):
escolhidos = []
for i in xrange(numero):
escolhidos.append(input('n%i:'%(i+1)))
sorteados = np.random.randint(1,10,numero)
counter = 0
for i in escolhidos:
if i in sorteados: counter = counter + 1
print 'Sorteio ditou ',sorteados
print 'Acertou %i numeros.'%counter

sorteio(5)

O resultado foi o seguinte:

n1:1

n2:2

n3:3

n4:4

n5:5

Sorteio ditou [4 9 4 8 8]

Acertou 1 numeros.

Passo a explicar; o número que tu inseres com a função é o número do sorteio (no teu exemplo fizeste com 5). Por cada um dos números ele vai fazer a pergunta com o input e adicionar o resultado a uma lista inicialmente vazia ("escolhidos").

Cria o vector do sorteio (o terceiro argumento do randint é o tamanho desse vector em vez de estar a fazer um a um) e novamente com um ciclo for pergunta a cada um dos elementos da lista se existe no vector do sorteio (se sim acrescenta um ao contador).

Agora este tipo de sorteio está a funcionar para números independente da localização deles no vector e além disso são repetiveis. Dependendo do tipo de jogo que é terás de meter algumas alternativas, por exemplo no vector sorteio não existir um número repetido.

Já agora como é que eu faço para meter a formatação de respostas com código Python como tens no teu primeiro post?

Edited by thoga31
GeSHi
Link to comment
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
 Share

×
×
  • Create New...

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.