0

我想为随机电子邮件生成 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)
4

2 回答 2

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]:
于 2013-10-08T09:27:53.000 回答
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'
于 2013-10-08T09:46:57.137 回答