使用python 3.2生成随机电子邮件

时间:2013-10-08 09:22:27

标签: python random

我想为随机电子邮件生成64个字母。有一些限制,以便遵循电子邮件语法。但我不知道为什么我的输出显示任何东西。我的if语句有问题吗?

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 个答案:

答案 0 :(得分: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]:

答案 1 :(得分: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'