2013-10-08 61 views
0

我想爲隨機電子郵件生成64個字母。有一些限制,以便遵循電子郵件語法。但我不知道爲什麼我的輸出不顯示任何內容。我的if語句有什麼問題嗎?使用python生成隨機電子郵件3.2

import random 
y=" " 
for x in range (0,64): 
    z = random.randint(33,127) 
    if z in [32,34,40,41,44,58,59,60,62,64,91,92,93] == False: 
      b = chr(z) 
      print(b) 
+2

你需要做的是'如果Z不是[32,34,40,41,44,58,59,60,62, 64,91,92,93]'。在[32,34,40,41,44,58,59,60,62,64,91,92,93]中的z = ==假==總是會評估爲「False」 –

回答

2

此:

if z in [32,34,40,41,44,58,59,60,62,64,91,92,93] == False: 

等同於:

if z in [32,34,40,41,44,58,59,60,62,64,91,92,93] and [32,34,40,41,44,58,59,60,62,64,91,92,93] == False: 

從未計算結果爲True,則可能意味着做:

if z not in [32,34,40,41,44,58,59,60,62,64,91,92,93]: 
+0

omg。非常感謝!我已經知道了。 –

1

這裏是一個不錯的方式做你想做的事:

import random 

invalid_choices = [32,34,40,41,44,58,59,60,62,64,91,92,93] 
valid_choices = list(set(range(33,127)) - set(invalid_choices)) 

def generate_content(length): 
    return [pick_letter() for _ in range(length)] 

def pick_letter(): 
    return chr(random.choice(valid_choices) 

使用代碼:

>>> generate_content(10) 
['Z', 'o', 'q', '~', 'a', 'O', '2', 'p', 's', '3'] 

您可以使用任意數量,你會根據你在原來的職位給了指定的選擇隨機字符的列表。

爲了把它轉換成一個字符串,你可以這樣做:

>>> ' '.join(generate_content(10)) 
'! 3 * X 7 R s X } d'