2013-04-24 38 views
1

我正在嘗試創建一個Python程序,它接受一個字符串並顯示基於該字符串的排列。如何從aa ...生成一系列字符串到zz

例如。

如果用戶輸入「[AAA] Grim」,則應該生成從「aaa Grim」,然後「aab Grim」,然後「aac Grim」到「zzz Grim」等字。 或者如果用戶輸入「[AA ]嚴酷的「它應該產生」一個嚴峻「,」ab嚴峻「,」交流嚴峻「,以」zz嚴峻「

對不明問題標題。我不確定如何在沒有示例的情況下輸入我所需要的內容。 :)

+5

如果用戶輸入 「死神」?無論如何,看看['itertools.product'](http://docs.python.org/2/library/itertools.html#itertools.product)。您可以將它應用於['string.ascii_lowercase'](http://docs.python.org/2/library/string.html#string.ascii_lowercase)或'ascii_uppercase'。 – 2013-04-24 10:25:56

+0

我編輯了你的標題和標籤。另外,你有什麼想法如何解決這個問題? – georg 2013-04-24 10:31:16

回答

0
input = '[AAA] Grim' 
n = len(input.split(' ')[0]) - 2 
s = input[n+2:] 
a = [''.join(x)+s for x in itertools.product(string.ascii_lowercase, repeat=n)] 
0

如果我明白你的意思是下面會做什麼:

import re 
import string 
import itertools 

user_in = input("Enter string: ") 
p_len = user_in.index(']') - user_in.index('[') 
text = user_in[user_in.index(']')+1:] 
print('\n'.join([ ''.join(p) + text for p in itertools.combinations_with_replacement(string.ascii_lowercase,r=p_len-1)])) 

會產生(摘錄):

Enter string: [AA] Grim 
aa Grim 
ab Grim 
ac Grim 
ad Grim 
ae Grim