生成

2011-05-30 34 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