生成

2011-05-30 62 views
6

我想知道什麼是寫方法產生我從1數到50,最簡單的方法,然後取決於生成數的返回我的字符串像數爲6
Abcdefghi如果產生數爲9生成

我使用python 3.2

+3

如果蘭特數量爲> 26(以字母數字字母的)? – mouad 2011-05-30 10:03:48

+0

不錯的問題:)然後27個字母是a,28 b等等。 Thanx – user278618 2011-05-30 10:08:06

回答

8

有幾個方法,最簡單的:

>>> 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'  

或者你可以有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

我想你應該添加.title(),因爲他想要大寫的第一個字母。 – mouad 2011-05-30 10:04:30

+0

我有一個例外:AttributeError:'模塊'對象沒有'字母'屬性 – user278618 2011-05-30 10:08:43

+1

string.letters已在Python 3中重命名爲string.ascii_letters。 – codeape 2011-05-30 10:12:08