如何使用随机组合不同的短语python



我正试图使用random从包含随机名称的元组中生成一个具有随机数量名称的随机用户名。我尝试了一些代码,但没有成功。

这是我尝试过的代码,但当我打印时,它给了我这个:<generator object <genexpr> at 0x7f8728c52580>

randnames = ['ender', 'Pro', 'itz', 'YT', 'Chill', 'Mom', 'Playz', 'Games', 'fortnite', 'prokid', 'monkey', 'Gamer', 'GirlGamer', 's1mp', 'lowping', 'ihave', 'getgud', 'istupid', '123', 'minecraft', 'LMAO', 'non']
username = f'{random.choice(randnames) for i in range(random.randint(1, 8))}'

问题是行

random.choice(randnames) for i in range(random.randint(1, 8))

它返回生成器对象而不是字符串,因此当您尝试使用fstring将其转换为字符串时,只需打印该对象。

如果您使用列表将其转换为列表,您可以看到输出更改为随机名称列表

f"{list(random.choice(randnames) for i in range(random.randint(1, 8)))}"

输出:

['prokid', 'Chill', 'non', 'Playz']

但是,为了获得您想要的输出,您应该使用''.join,它接受一个可迭代对象(就像您使用理解创建的生成器对象一样(,并将它的所有元素连接在一起。

randnames = ['ender', 'Pro', 'itz', 'YT', 'Chill', 'Mom', 'Playz', 'Games', 'fortnite', 'prokid', 'monkey', 'Gamer', 'GirlGamer', 's1mp', 'lowping', 'ihave', 'getgud', 'istupid', '123', 'minecraft', 'LMAO', 'non']
username = ''.join(random.choice(randnames) for i in range(random.randint(1, 8)))

如果你做print(username),如果选择相同的随机名称,你会得到

prokidChillnonPlayz

这正是你想要的。

最新更新