2016-12-01 1 views
0

이름이 서로 다른 목록을 만들려고합니다. 여기에 내 코드가 있지만, 모두 동일한 이름의 인스턴스가 여러 개 만들어집니다.임의의 이름 목록 생성 - Python

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 

예를 들어이 나타날 것 같은 :

존 스미스 존 스미스 존 스미스

하지만 같은 원하는 : 존 윌리엄스 앤디 존슨을 조 존슨

답변

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 
1

당신이 하나의 이름을 생성 한 후 세 번을 복제하기 때문이다.

당신이 당신의 선택을 통해 세 가지 다른 이름, 다음 루프 일상을 세 번하려면 : BTW

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) 

, 당신이 정말로 그룹이 모든 이름이 될 싶어 그냥 연결된를?

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)])  
0

출력이 공간은 각각의 이름을 분리 한 줄에이기 때문에, 당신은 코드를 단순화 할 수 있고 당신이 "이름" "성"패턴에 이름을 추가 임에도 불구하고, 하나 개의 목록에있는 모든 이름을 저장합니다. 거기에서 마지막으로 여섯 개의 이름을 공백으로 구분하여 인쇄 할 수 있습니다. 모두 '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