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

javsrt

random

Mensagens Recomendadas

javsrt    0
javsrt

boa tarde

eu tenho uma dúvida e espero que me possam ajudar

imaginando que tenho uma string do genero a="0, 1, 3, 5, 7, 9"

e pretendo que aleatoriamente, o programa me escolha um dos números da string

como posso fazer isso?

obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
thoga31    594
thoga31
import random as r

r.choice("013579")

# para admitir a string com vírgula e espaço:
s = "0, 1, 3, 5, 7, 9"
while s.count(' ') != 0:
   s = s.replace(' ','')
while s.count(',') != 0:
   s = s.replace(',','')

r.choice(s)

Editado por thoga31

Knowledge is free!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Pedro C.    15
Pedro C.

Nota o seguinte código:

a = '0, 1, 3, 5, 7, 9'
b = a.split(',') # ESTOU A DIZER PARA CRIAR UMA SEPARACAO QUANDO ENCONTRAR UMA ,
print 'RESULTADO DO COMANDO SPLIT:', b
# ASSUMINDO QUE PRECISAS MESMO DE NUMEROS EM VEZ DE STRINGS DE NUMEROS...
c = [] # CRIO UMA LISTA VAZIA POT UMA QUESTAO DE ORGANIZACAO DE CODIGO
for i in b: # POR CADA ELEMENTO DA LISTA b
  c.append(int(i)) # ESTOU A CONVERTER AS STRINGS PARA INTEIROS
print 'RESULTADO DA CONVERSAO PARA INTEIRO:',c
# FALTA O ULTIMO PASSO QUE E TIRAR UM DELES ALEATORIAMENTE
import random # IMPORTAR BIBLIOTECA STANDARD RANDOM
# UTILIZO O COMANDO RANDINT PARA GERAR UM NUMERO INTEIRO DE 0 ATE AO
# COMPRIMENTO TOTAL DA LISTA INCLUSIVE (ACHO EU...)
print 'O ALEATORIO E:',c[random.randint(0,len( c )-1)]

Cujo o resultado é:

RESULTADO DO COMANDO SPLIT: ['0', ' 1', ' 3', ' 5', ' 7', ' 9']
RESULTADO DA CONVERSAO PARA INTEIRO: [0, 1, 3, 5, 7, 9]
O ALEATORIO E: 3

Começo por utilizar o comando "split" para separa a string em elementos individuais (os números cujo separados no teu exemplo é a virgula). A seguir converto tudo para inteiros em vez de ser strings de inteiros (não sei se precisas deste passo). Depois preciso de gerar um posição aleatória nesta última lista. O comando "randint" do módulo (standard) "random" faz isto (não sei se ele funciona com todos os extremos inclusive ou exclusive, é melhor testares). Depois de gerares essa posição na lista basta ires buscar o elemento respectivo (que no caso acima está tudo na mesma linha de código, conto não causar confusão).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Pedro C.    15
Pedro C.

Sim eu reparei no teu código, só postei porque já tinha escrito o meu entretanto.

E sim a opção do choice é melhor, eu simplesmente desconhecia a sua existência. Obrigado.

Partilhar esta mensagem


Link 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.