###前提・実現したいこと
Windows10、python3、VScodeで、『いちばんやさしいPython』をもとに、txtファイルを読み込んで回答するチャットプログラミングを作成しています。txtファイルの中身は、
こんにちは,コンニチハ
ありがとう,ドウイタシマシテ
さようなら,サヨウナラ
で、改行に区切って三つにわけ、さらにカンマで区切って左を辞書型のキー、右をバリューにしています。
単語にキーが含まれる際に対応するバリューがレスポンスとして返されます。
コマンドプロンプトでの実行を想定しています。
###発生している問題・エラーメッセージ
ファイルの読み込みはできていないのか、内容が上手く回答に反映されません。
「pybot> 」は表示されます。
「こんにちは」で単語を認識できない時の回答(「何ヲ言ッテルカ、ワカラナイ」)になり、
「ありがとう」では何も表示されません。
他の平成何年か計算する機能なども反応しませんでした。
###該当のソースコード
def len_command(command): cmd, text = command.split() length = len(text) response ='文ノ長サハ {}文字デス'.format(length) return response def heisei_command(command): heisei, year_str = command.split() year = int(year_str) if year >=1989: heisei_year = year-1988 response = '西暦{}年ハ、平成{}年デス'.format(year, heisei_year) else: response = '西暦{}ハ、平成デハアリマセン'.format(year) return response command_file = open('C:\Users\〇\Python\Scripts\pythonscript\mosteasypy\pybot.txt', encoding='utf-8') raw_data =command_file.read() command_file.close lines = raw_data.splitlines() bot_dict ={} for line in lines: word_list = line.split(',') key = word_list[0] response = word_list[1] bot_dict[key] = response while True: command = input('pybot> ') response = '' for key in bot_dict: if key in command: response = bot_dict[key] break if '平成' in command: response = heisei_command(command) if '長さ' in command: response = len_command(command) if not response: response = '何ヲ言ッテルカ、ワカラナイ' print(response) if 'さようなら' in command: break
###試したこと
予想として、
1、文字コードがしていない
2、ファイルを置く階層が間違っている
のどちらかではないかと考えています。
読み込むテキストファイルは絶対パスで書き、保存場所もソースコードと同じ場所に置いています。
よろしくお願いいたします。
###補足情報(言語/FW/ツール等のバージョンなど)
Windows10、python3、VScode
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/28 15:49
2017/12/29 01:40
2017/12/29 13:50
2017/12/29 14:10
2017/12/29 16:44