

botを作る以下のコードで「こんにちは」以外認識されず、また上手く返答されません。  
入力文字はutf8で、pythonはバージョン3.6を使用しております。

[code]

    bot_dict = {
        'こんにちは': 'コンニチハ',
        'ありがとう': 'ドウイタシマシテ',
        'さようなら': 'サヨウナラ',
        }
    
    while True:
        command = input('pybot> ')
        response = ''
        for key in bot_dict:
            if key in command:
                response = bot_dict[key]
                break
    
            if not response:
                response = '何ヲ言ッテイルカ、ワカラナイ'
            print(response)
    
            if 'さようなら' in command:
                break
    
[/code]

[![](https://i.stack.imgur.com/o0rH3.jpg)](https://i.stack.imgur.com/o0rH3.jpg)


CC BY-SA 3.0
2017-11-12T15:11:42.043
39523
2017-11-13T15:29:24.417
2017-11-13T15:29:24.417
3605
26163
question
python
pod で上手く辞書機能が使えません


インデントのせいで、返答を表示する

[code]

    if not response:
        response = '何ヲ言ッテルカ、ワカラナイ'
    print(response)
    
    if 'さようなら' in command:
        break
    
[/code]

の部分まで、`for`ループの中に入っているのが原因です。

少しコードを追ってみると、'こんにちは'を入力したとき

[code]

    for key in bot_dict:
        if key in command:
            response = bot_dict[key]
        　　break
    
[/code]

の`if`文の条件にマッチしますが、`break`でループを抜けるので返答部分をスキップしてしまい、`response`が表示されません。

また、'ありがとう'を入力すると、最初に'こんにちは'と比較してループを抜けないため、返答部分を実行しています。


CC BY-SA 3.0
2017-11-12T17:03:43.647
39525
2017-11-12T17:03:43.647
3605
39523
answer