2016-12-01 11 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

ここで文字列を複製しているだけです。ランダムは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) 

出力:あなたは一つの名前を生成し、それを3回複製しているため

Joe Williams Joe Johnson Joe Smith 
1

をこれがあります。

次の3人の異なる名前にしたい場合は、あなたの選択をループルーチン3回:

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を使用すると、その文字列を3回コピーすることになります。

あなたがしたいことをするには、random.choiceを姓と名字に3回電話する必要があります。

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

出力は、それぞれの名前を分離するスペースを1行上にあるので、あなたは、「最初の名前」「姓」のパターンに名前を追加しながらも、コードを簡素化し、1リスト内のすべての名前を格納することができます。そこから、最後にスペースで区切られた6つの名前を印刷して、3つの完全な名前を付けることができます。つまり、 '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 
関連する問題