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