2017-05-18 14 views
0

内の文字のセットの共通部分を見つけるために、この私が編集しようとしているコードですが、私は方法がわからない:のPython 3.xの - どのように二つの文字列

var1= 'ABC' 
var2= 'DBC' 
match= any(x in var1 for x in var2) 
if any(x in var1 for x in var2): 
    print("var1 in var2") 
    print("The letters that are in var1 and var2 are", match) 
else: 
    print("No results.") 

私は、そのコードを実行するとI私のために役に立たない、これらの結果を得る:

var1 in var2 
The letters that are in var1 and var2 are BC 

ABD IにVAR1を変更した場合:私は実行するプログラムがあるにしたい何

var1 in var2 
The letters that are in var1 and var2 are True 

結果を次のようにします。

var1 in var2 
The letters that are in var1 and var2 are BD 

P.S.私はアルファベット順に文字を印刷したい: The letters that are in var1 and var2 are BDのような結果で、The letters that are in var1 and var2 are DBではないようにしたい。

ありがとうございます。 よろしくお願いいたします。

答えて

2
var1= 'ABC' 
var2= 'DBC' 
match= [x for x in var1 if x in var2] 
if match: 
    print("var1 in var2") 
    match_str = ''.join(sorted(match)) 
    print("The letters that are in var1 and var2 are %s." % match_str) 
else: 
    print("No results.") 

この版画:

var1 in var2 
The letters that are in var1 and var2 are BC. 

基本的に私がリストのsorted機能を使用して並べ替え、if matchと非空であるかどうかをチェックする、同じである要素を見つけるために、リスト内包を使用していますそれぞれの要素を''.joinという単一の文字列に連結します(文字間に空白は入れないので、空の文字列''と結合します)。

出力にカンマが付かないように、私は%書式構文を使用して、ソートされた文字を出力文に挿入します。

+0

私は –

+0

申し訳ありませんが、固定タイプミス 'の' 行3で無効な構文を取得します。 –

+0

ありがとうございます。本当に助けてくれました。 –

1

これを行うには、set arithmeticを使用することもできます。 var1を変更

>>> var1 = 'ABC' 
>>> var2 = 'DBC' 
>>> ''.join(set(var1).intersection(set(var2))) 
'CB' 

>>> var1 = 'ABD' 
>>> ''.join(set(var1).intersection(set(var2))) 
'BD' 
関連する問題