我试图创建一个名单列表,每个名称都不同。这是我现在的代码,但它只创建了多个同名的实例。
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
答案 0 :(得分:2)
这是因为您生成了一个名称,然后将其复制三次。
如果你想要三个不同的名字,那么循环你的选择程序三次:
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)
顺便说一句,您真的希望群组成为刚刚连接的所有名称吗?
答案 1 :(得分:1)
你只是在这里复制你的字符串。随机只发生一次。
改为在生成器理解中进行,并将结果与空间结合:
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
答案 2 :(得分: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
循环中执行此操作,以避免重复代码。
答案 3 :(得分: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)
答案 4 :(得分: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)])
答案 5 :(得分:0)
由于输出位于一行,每个名称之间用空格分隔,因此您可以简化代码并将每个名称存储在一个列表中,尽管您在“名字”“姓氏”模式中附加名称。从那里你可以打印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
答案 6 :(得分: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()