生成随机姓名列表 - Python

3

我正在尝试创建一个不同的名称列表。这是我的代码,但它只会创建多个相同名称的实例。

import random

first_names=('John','Andy','Joe')
last_names=('Johnson','Smith','Williams')

full_name=random.choice(first_names)+" "+random.choice(last_names)

group=full_name*3

例如,这将显示为:
John Smith
John Smith
John Smith

但我想要类似这样的东西:
John Williams
Andy Johnson
Joe Johnson
9个回答

5

这里你只是在重复你的字符串。随机数只会出现一次。

最好使用生成器推导式,然后用空格将结果连接起来:

import random

first_names=('John','Andy','Joe')
last_names=('Johnson','Smith','Williams')

group=" ".join(random.choice(first_names)+" "+random.choice(last_names) for _ in range(3))


print(group)

输出:

Joe Williams Joe Johnson Joe Smith

4
这是因为您生成了一个名称,然后复制了三次。
如果您想要三个不同的名称,那么请通过您的选择程序循环三次:
group = []
for i in range(3):
    full_name=random.choice(first_names)+" "+random.choice(last_names)
    group.append(full_name)
 #assuming he wants at least some kind of seperator between the names.
 group_string = ", ".join(group)

顺便问一下,你真的希望group是所有名称的简单拼接吗?


1

1

由于输出在一行上,每个名称之间用空格分隔,因此您可以简化代码并将每个名称存储在一个列表中,即使您以“名字”“姓氏”的模式添加名称。从那里,您可以在最后打印6个名称,所有名称都用空格隔开,给您三个完整的名称。总的来说,“random.choice()”函数需要被调用6次。

import random

first_names=('John','Andy','Joe')
last_names=('Johnson','Smith','Williams')
names = []
for i in range(3):
    names.append(random.choice(first_name)
    names.append(random.choice(last_name)

print ' '.join(names)

输出

Andy Smith Andy Williams John Johnson

0
你可以将主要部分放在一个带有打印的函数中,然后调用该函数3次。
def name():
    import random
    
    first_names=('John','Andy','Joe')
    last_names=('Johnson','Smith','Williams')
    
    full_name=random.choice(first_names)+" "+random.choice(last_names)
    print(full_name)
for _ in range(3):
    name()

0

pip install names

使用Python创建随机名称 要创建随机名称,只需执行以下操作:

import names

for i in range(10):
    print(names.get_full_name())

0
你所做的是在字符串上使用*3,这意味着它会将该字符串复制三次。
要实现你想要的效果,你需要分别调用random.choice三次来获取名字和姓氏。
full_name1 = random.choice(first_names)+" "+random.choice(last_names)
full_name2 = random.choice(first_names)+" "+random.choice(last_names)
full_name3 = random.choice(first_names)+" "+random.choice(last_names)

group = full_name1 + " " + full_name2 + " " + full_name3

你也可以在一个 for 循环中执行此操作,以避免重复代码。


0

你需要调用random.choice() 3次,而不是只调用一次并打印相同的全名3次。

import random

first_names=('John','Andy','Joe')
last_names=('Johnson','Smith','Williams')
group = list()
for x in range(3):
    fullname = random.choice(first_names)+" "+random.choice(last_names)
    group.add(fullname)
print " ".join(group)

0

只是更短。

from random import choice
first_names=('John','Andy','Joe')
last_names=('Johnson','Smith','Williams')

name = " ".join(["%s %s" % (choice(first_names), choice(last_names)) for _ in range(3)])    

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