質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

464閲覧

SyntaxErrorが解決されない。

Yuto921

総合スコア11

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/05/10 05:58

編集2019/05/10 06:16

前提・実現したいこと

「いちばんやさしいPythonの教本」のChapter7
コマンドを実行して結果を返したい。

干支を教えてくれるプログラムを作っています。

例)
コマンド 干支2000
結果  2000年生マレノ干支ハ 「辰」 デス。

コマンドを打った時に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ ```mba:python yuto$ python pybot.py pybot>平成2000 Traceback (most recent call last): File "pybot.py", line 34, in <module> command = input('pybot>') File "<string>", line 1 平成2000 ^ ### 該当のソースコード ![イメージ説明](a7e96d1cceab9c42bc88cd0f857d6583.png) _ #coding: UTF-8 from pybot_eto import eto_command 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('pybot.txt') 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> ')** ←エラー該当の34行目 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 '干支' in command: response = eto_command(command) if not response: response = '何ヲ言ッテイルカ、ワカラナイ' print(response) if 'さようなら' in command: break ### 試したこと ネットで調べたり、空欄が紛れ込んでないか確認しましたが、依然としてエラーのままです。 どこが間違っているのかわからないです。 ### 補足情報(FW/ツールのバージョンなど) テキストファイルはSublimeText コマンド操作はターミナルで行なっています ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2019/05/10 06:12

インデントがなくなっていますので、ソースコードはコードブロックで囲んでください。
guest

回答2

0

違うかもしれませんが、「平成2000」と入力しているところは、「平成 2000」
のように間に空白を入れないとうまくいかないのではないでしょうか?
自分の環境では、空白を入れないと、split()がうまく動作しなかったです。

投稿2019/05/10 07:01

KNaito

総合スコア376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuto921

2019/05/10 07:05

空白を入れて入力するプログラムとなっています。 ありがとうございます。
guest

0

ベストアンサー

python3のinput関数は文字列の読み込みを、python2のinputは読み込んだ結果を式として評価した結果を返します。

書籍のコードはpython3系を前提としていますが、python2で実行してしまっていると考えられます。

環境構築や実行環境の設定などに問題がないか確認してください。

投稿2019/05/10 06:53

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuto921

2019/05/10 07:05

コマンドで、python3 pybot.py で正常にinputの結果が実行できました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問