msmsms Posted October 1, 2012 at 08:15 AM Report #477273 Posted October 1, 2012 at 08:15 AM (edited) 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 October 1, 2012 at 10:34 AM by brunoais geshi
HappyHippyHippo Posted October 1, 2012 at 09:46 AM Report #477289 Posted October 1, 2012 at 09:46 AM e que tal um ciclo de 1 a 5 (ou 0 a 4) que em cada iteração verifica se o número aleatório criado também na iteração existe na lista de números inseridos ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
brunoais Posted October 1, 2012 at 10:36 AM Report #477294 Posted October 1, 2012 at 10:36 AM 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%.
Pedro C. Posted October 1, 2012 at 05:16 PM Report #477337 Posted October 1, 2012 at 05:16 PM (edited) 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:1n2: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 October 1, 2012 at 08:47 PM by thoga31 GeSHi
thoga31 Posted October 1, 2012 at 09:06 PM Report #477357 Posted October 1, 2012 at 09:06 PM Já agora como é que eu faço para meter a formatação de respostas com código Python como tens no teu primeiro post? Sem espaços: [ code=python ]código[ /code ] Knowledge is free!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now