2016-12-14 4 views
0

私は組み合わせの代わりに順列を使うのを間違っていました。ユーザーがこのプログラムに入力する名前を、2つのペアで印刷することになっています。私のコードの断片です、完全なコードはHERE見つけることができるので、一般的な質問は可能なすべての名前の組み合わせを印刷する代わりに、どのように私は2の反復ペアを印刷できますか?あなたはすべての可能な組み合わせを作成するためにitertools.combinations()を使用して、すべてのユニークな組み合わせをフィルタリングするset()を使用することができます組み合わせへの順列を変更する(PYTHON)

names = [] 

for i in range(n): names.append(raw_input("Enter name " + str(i + 1) + ": ")) 

count = 0 


def perm(a, k=0): 
global count 
if (k == len(a)): 
    print a 

    count += 1 
else: 
    for i in xrange(k, len(a)): 
     a[k], a[i] = a[i], a[k] 
     perm(a, k + 1) 
     a[k], a[i] = a[i], a[k] 


if n % 2 == 0: 
print"" 
perm(names) 
print"total combinations available: " + str(count) 
else: 

perm(names) 
print"total combinations available: " + str(count) 
print("please enter an even number next time") 

sys.exit() 
+2

'itertools.combinations()'と 'set()'を使います。 –

+0

@leafこれでどのくらい正確に行くのですか? "for i"から "for"文までのすべてを削除して置き換えますか?申し訳ありません本当にnoobie –

答えて

1

import itertools 
... 
combinations = set(itertools.combinations(names, 2)) 

をしかし、あなたのコードでは、あなたが唯一の数を気に思えます可能な組合せの。あなたはこれを見つけるために、組み込み関数len()を使用することができます。

number_of_combinations = len(combinations) 

あなたはnumber_of_combinationsと交換countを使用どこでも。

+0

はありがとうございます。 –

+0

私の喜び、@ethanjjjjjj。 –

関連する問題