2011-05-30 31 views
6

Quiero saber lo que es una forma más sencilla de escribir el método que me genera número del 1 al 50, y luego depende del número generado me devuelve cadena como:Generar en la cadena vuelo de [az]

Abcdef si se generan número 6 es
Abcdefghi si el número es generada 9.

estoy usando Python 3.2

+3

y si el número de rand es> 26 (número de letra en el alfabeto)? – mouad

+0

buena pregunta :) luego 27 letra es a, 28 b y así sucesivamente. Gracias – user278618

Respuesta

8

Hay algunos enfoques, el más simple:

>>> import string 
>>> import random 
>>> string.ascii_letters[:random.randint(1, 50)].title() 
'Abcdefghijklmnopq' 
>>> string.ascii_letters[:random.randint(1, 50)].title() 
'Abcdefghijklmnopqrstuvwxyzabcdefghijklmnopq' 
>>> string.ascii_letters[:random.randint(1, 50)].title() 
'Abcdefghijklmnopqrs'  

O puede tener un ir con itertools:

>>> import string 
>>> import random 
>>> from itertools import islice, cycle 
>>> def randstr(): 
...  return ''.join(islice(cycle(string.ascii_lowercase), 
...       random.randint(1, 50))).title() 
... 
>>> randstr() 
'Abcdefghijklmnopq' 
>>> randstr() 
'Abcdefghijklmnopqrstuvwxyzabcdefghijklmnopq' 
>>> randstr() 
'Abcdefghijklmnopqrs'  
+1

Creo que debería agregar .title() porque quiere la primera letra en mayúscula. – mouad

+0

Tengo una excepción: AttributeError: el objeto 'module' no tiene ningún atributo 'letters' – user278618

+1

string.letters ha cambiado de nombre a string.ascii_letters en Python 3. – codeape

Cuestiones relacionadas