如何制作随机电子邮件生成器?

8

我想从我的列表中获取7个随机字母,并将其组成一个随机电子邮件,但是我无法打印出完整的电子邮件,只能一次打印出一个字母。

import random

letters = ["a", "b","c", "d","e", "f","g", "h","i", "j","k", "l","m", "n",
           "o", "p","q", "r","s", "t","u", "v","w", "x","y", "z",]

random1 = random.choice(letters)

for x in random1(7):
    print (x+"@gmail.com")

这只会给我一个错误,如果我修复它,那么我只会收到一个字母的邮件。解决方法是:

random1 = random.choice(letters)
print (random1+"@gmail.com")

1
请更具体和详细。哪些错误?修复它意味着什么?这似乎是一个微不足道的问题,我建议阅读以下文章:https://ericlippert.com/2014/03/05/how-to-debug-small-programs/. - AMC
5个回答

15

请尝试以下方法:

import random
import string

def random_char(char_num):
       return ''.join(random.choice(string.ascii_letters) for _ in range(char_num))

print (random_char(7)+"@gmail.com")

如果您只想使用小写字母,可以使用 string.ascii_lowercase


你不需要在这里使用变量x,可以简单地使用“_”因为没有任何东西在使用x。 - gold_cy

3
如果需要的话,您可以使用faker库来生成这个。
import faker
f = faker.Faker()

get_list_of_email(n)
    return [f.email() for _ in range(n)]

# or just print
for i in range(10):
    print(f.email()) 

这可能提供更多现实世界的测试数据


2
import secrets
def email_generator():
    return f"{secrets.token_hex(8)}@gmail.com"

1
你的回答可以通过添加更多关于代码的信息以及它如何帮助提问者来改进。 - Tyler2P

1

虽然可能有更高效的方法,但你可以这样做:

import itertools
import random
letters = = ["a", "b","c", "d","e", "f","g", "h","i", "j","k", "l","m", "n",
           "o", "p","q", "r","s", "t","u", "v","w", "x","y", "z",]

all_combos = list(itertools.combinations(letters,7)) #make all 7 letter combinations
all_combos = [''.join(combo) for combo in all_combos] #make them strings
email = random.sample(all_combos,1)[0]+'@gmail.com' #grab a random one, add @gmail.com

根据您最初的方法:
email = ''
for _ in range(7):
    letter = random.sample(letters,1)[0]
    email += letter

email += '@gmail.com'

0
尝试这个。确保“return”不在for循环中,否则它只会返回一个字母。
def random_email(char_num):
   random_email = ''
   for x in range(char_num):
       random_email+=''.join(random.choice(string.ascii_lowercase))
   return random_email


print(random_email(7) + "@gmail.com")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接