

> 問題：２つの文字列について、共通の文字を出力する問題（重複なし）
[code]

>     word1=input('単語の入力(1)')  
>     word2=input('単語の入力(2)')
>  
>     common_char=''
>     for c1 in word1:
>         for c2 in word2:
>             pass
>             # これ以降に必要なコードを記述してください
>  
>     print(common_char)
>  
[/code]

という問題なのですが、自分は以下の様に記述したら出力結果がおかしくなってしまいました。  
なぜなのか教えていただきたいです。多分for文の考え方がまだ曖昧な気がしています。

[code]

    word1=input('単語の入力(1)')  
    word2=input('単語の入力(2)') 
    
    common_char=''
    for c1 in word1:
        for c2 in word2:
            pass 
            # これ以降に必要なコードを記述してください
            for c3 in common_char:
                if c1 == c2 :
                    if c1 == c3:
                        continue
                    common_char += c1
    
    print(common_char) 
    
[/code]

ただ、回答は理解して、in関数を用いて以下の様に記述したら正しく出力されました。  
上の記述の何がダメだったのかが全然わからないです。よろしくお願いします。

[code]

    word1=input('単語の入力(1)')  
    word2=input('単語の入力(2)') 
    
    common_char=''
    for c1 in word1:
        for c2 in word2:
            pass 
            # これ以降に必要なコードを記述してください
            if c1 == c2 :
                if c1 in common_char:
                    continue
                common_char += c1
    
    print(common_char) 
    
[/code]


CC BY-SA 4.0
2021-05-03T18:23:59.247
75659
2022-05-20T01:29:51.080
2022-05-20T01:29:51.080
3060
44985
question
python
2 つの文字列から共通の文字を抽出して、かつ重複をなくすには？

[code]

    common_char=''
    　　・
    　　・
    　　・
    for c3 in common_char:
        if c1 == c2 :
            if c1 == c3:
                continue
            common_char += c1
    
[/code]

上記の場合for文は、`common_char`の中にある要素の数だけ処理をするため、上記の`for c3 in
common_char:`よりも前で`coomon_chart`に要素が入っていない（つまり要素数が0）ので、for文が処理されていません。  
**要素数がn個＝for文の処理回数がn回** という感じです。

[code]

    if c1 in common_char:
        continue
    
[/code]

次にこっちのif文でのin演算についてなんですが、こちらも`if c1 in
common_char:`より前で`common_char`に要素が入っていないため、上記のコードは処理されていません。この二行を試しにコメントアウトして実行してみてください。


CC BY-SA 4.0
2021-05-05T18:03:25.567
75686
2021-05-05T18:03:25.567
45138
75659
answer