2015-07-12 162 views
-4

我有僞隨機生成字符串的代碼。我怎樣才能讓我的代碼輸出25個隨機字符串?生成25個僞隨機字符串

import random, string 

special=['@','!','#','$','%','^','&','*','(',')','-','=','+','{','[','}',']',';',':','.','>','<',',','?','/',] 

def id_generator(size=25, chars=string.ascii_uppercase + string.digits + random.choice(special)): 
    return ''.join(random.choice(chars) for _ in range(size)) 

count = 0 

def create_and_save_pseudorand(): 
    for count in range(100): 
     return id_generator() 
     #print(id_generator()) 

create_and_save_pseudorand() 
+0

注意'return'將*結束功能* - 你的意思是' yield'? – jonrsharpe

回答

1

我猜你要麼需要

return [id_generator() for i in range(25)] 

或交換returnyield,然後使用:

for i in create_and_save_pseudorand(): 
    print i 

順便說一句:你似乎混淆的長度和數量字符串。哪一個應該是25?

+0

兩者都應該是25. 25字符串,25字符長 – CodeTalk

0

您的函數create_and_save_pseudorand當前在返回第一個隨機生成的字符串後停止。將return更改爲yield即可解決該問題。然後,您可以引入count參數來確定要生成的隨機字符串的數量。

def create_and_save_pseudorand(count): 
    for count in range(count): 
     yield id_generator() 

你可能會然後打印使用

print(list(create_and_save_pseudorand(25))) 

示例輸出控制檯上的結果:

['YAB*MT7CU29IY12QMVLNH4QI9', '1E1445DCN*5K7RZIJNKSIKX10', '53W06LS8NJEAE0X60MFW*ES*W', 'KK8WMRA3DMPRWWYQDG2M0ED0Q', 'ZFLBQ0V04Z*E1PVUF4DG04IJ2', '292VPZA3QDKLQ4UBTKJA3TY3H', 'A77426HK1HNZVMUT883CZABIX', 'I2M4I0IO9GRLNVAH9BWV52AYJ', '*VUU3DGHN79SG5XPELHCKSG29', '*KWM2BUPGIL4OV3TUZ7614OAT', '29JZ*Y59*O2SPL7CWL9BB3*5V', 'IVZ0MK0HPIVCJG039Y9GTM*ZH', 'ZF2QSL5VXYW6B4*FOE4KRL4LW', 'ZOK*Z508DD1JE5UYHLGGKORKS', 'L2XIBU8J3IMZO9Y2GFLQSB3W7', 'PA6ZJGXS4G96FDA771143TOMM', '2ZHK13LVZZQ878L1OR2LQ3TGV', 'QGYR2WNJ58GPD0*54CHI6AKAR', 'TKPBD27HQ0TZFFZCVMIDAYJX4', 'G7HH9YSZ4P3ETRGY9REB90WDC', 'G3PTXR376AGJHX4V5V4NRLL30', 'XHM1J0A5Z48*58RFVH9W3Z5*O', 'XHG8VGNF*YA4GBX1SBE*DVGKV', '39YNN1X719N*WZ9VBUPLTVC5P', 'XYMJ57DH*3WX589J9ZENGFP0O'] 
+0

輸出到網頁怎麼樣? – CodeTalk

+0

@CodeTalk怎麼樣? – jonrsharpe

+0

我該怎麼辦?這隻會將(1)值輸出到網頁 – CodeTalk