我想为随机电子邮件生成 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)
这个:
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]:
这是做你想做的事的好方法:
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'