main.pyでpybot.py内のeto_cmd()という関数を呼び出しているのですが、
結果が表示されない状態です。
エラー等は発生していないので、どこが、どう間違っているのか見つけることが
できません。
pybot_eto.py
python
1def eto_cmd(cmd): 2 eto, year = cmd.split() 3 eto_list = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'] 4 eto_nun = (int(year) + 8) % 12 5 eto_name = eto_list[eto_nun] 6 res = 'あなたの干支は{}です' .format(eto_name) 7 return res
main.py
from pybot_eto import eto_cmd def heisei_cmd(cmd): heisei, year_str = cmd.split() year = int(year_str) if year >= 1988: heisei_year = year -1988 res = '西暦{}年は、平成{}年です。' .format(year, heisei_year) return res else: res = '平成ではありません' return res with open('pybot.txt', encoding='utf-8') as cmd_file: raw_data = cmd_file.read() lines = raw_data.splitlines() bot_dict = {} for line in lines: word_list = line.split(',') kye = word_list[0] msg = word_list[1] bot_dict[kye] = msg while True: cmd = input('>>>') res = '' for kye in bot_dict: if kye in cmd: res = bot_dict[kye] print(res) break if '平成' in cmd: res = heisei_cmd(cmd) print(res) break else: print(res) break if '干支' in cmd: res = eto_cmd(cmd) # 関数呼び出し print(res) if not res: res = 'ナニヲイッテイルカワカリマセン。' print(res) break if 'さようなら' in cmd: break
if '干支' in cmd:の直前でprint(cmd)すると何が表示されますか?
使っているPythonのバージョンは何ですか? Pytho2のinput()とPython3のinput()は、機能が異なるといった違いがあるので、Python2をつかっているのかPython3を使っているのかを明らかにしてください。
「res = eto_cmd(cmd) # 関数呼び出し」で使われている cmd は、キー入力した結果なので、プログラムから値が何であるのかが判りません。
そして、cmd は、if文の条件に使われているので、cmdの内容が不明だと、プログラムの動作は"判りませんねぇ"としか回答できません。
「cmd = input('>>>')」の次に「print(cmd)」という行を追加して、cmdの値の確認をすることをお勧めします。
>meg_ さんへ
Python3は3系を利用しております。
回答1件
あなたの回答
tips
プレビュー