2015-07-03 65 views
0

好吧,我試圖生成一個包含特定字符的10個字符的字符串。 在條件允許的情況下,字母不能重複(但是數字爲CAN),並且字符串只能包含總共兩個字母,不能多於,不能少於兩個。最終的字符串輸出必須是8個數字和2個字母。生成一個隨機字符串,只允許某些字符在Python中重複

numbers = ["1", "2", "3"] 
letters = ["X", "Y", "Z"] 

即串輸出應該類似於

123X21Y213 

的問題是,我不知道如何做到這一點,優雅。 我確實創建了一個解決方案,但它的方式太多,並且不斷檢查字符串的前一個字符。 我真的很不好,需要更簡單的東西。

任何幫助,將不勝感激。

+0

如果你有工作,你認爲可以改進的代碼,看到http://codereview.stackexchange.com – jonrsharpe

回答

5
numbers = ["1", "2", "3"] 
letters = ["X", "Y", "Z"] 

from random import sample, shuffle 


samp = sample(letters,2)+sample(numbers*3,8) 
shuffle(samp) 

print("".join(samp)) 
113332X2Z2 

或者使用選擇範圍:

from random import sample, shuffle,choice 

samp = sample(letters,2)+[choice(numbers) for _ in range(8)] 
shuffle(samp) 

print("".join(samp)) 
1212ZX1131 
+3

怎麼樣'號* 8'?按原樣,不能生成字符串「111111111XY」(而它似乎是可以接受的)。 –

+0

@ThomasOrozco,我增加了選擇,這將允許111111111XY。 –