2016-12-20 10 views
0

if文を作成しようとしていますが、すべての可能な配置で単語を文字列でテストする必要があることに気付きました。だから私はこれについてどうやって行くのだろうか。ここどのようにすべての順序で単語で文字列をテストするのですか

私のコードは、私が正しくあなたの目標を理解していれば、あなたの「文字列」は、それらのいずれかである場合、あなたはstring変数のすべての取り決めを作成しif文を作成したい、そしてテスト

string = ("red blue black") 

if string == "red blue black": 
    print("cool") 
+0

[Pythonでリストのすべての順列を生成する方法](http://stackoverflow.com/questions/104420/how-to-generate-all-permutations-of-a-list-in-python ) – mkrieger1

答えて

0

です手配

あなたがitertools moduleの順列を使用できるように、リストのすべての配置は、「順列」のようになります。

import itertools 

string = ("red blue black") 

all_arrangements = list(itertools.permutations(string.split())) 

if string in [' '.join(i) for i in all_arrangements]: 
    print "cool" 

配置があなたの文字列に基づいて生成されるため、あなたのif文を満たすことを期待することができます「if」ステートメントのロジックをさらに変更しない限り、「cool」が常に出力されます。

は、より良い次のコードで上記if文ブロックを交換し、一致したあなたの文字列のどの配置確認することができ、上記のコードで何が起こっているかを説明するには、次の

print "checking for ", string 

for arrangement in all_arrangements: 
    if string == ' '.join(arrangement): 
     print arrangement , "cool" 
    else: 
     print arrangement 

出力:

checking for red blue black 
('red', 'blue', 'black') cool 
('red', 'black', 'blue') 
('blue', 'red', 'black') 
('blue', 'black', 'red') 
('black', 'red', 'blue') 
('black', 'blue', 'red') 

これが役に立ちます。

+0

IIRC 'string'はキーワード/組み込みではありませんが、' str'は組み込みです。 – moogle

+0

この回答は完璧です! –

+0

@moogle、良いキャッチ、私はそれをoverthinkingしていた!私はそれを編集します.. – davedwards

関連する問題