前提・実現したいこと
if文の条件分岐で、else:まで書いて改行すると、文法エラーになります。
インデントが問題であるとは思うのですが、どのようにしたら揃えられるのかが分かりません。
ちなみに使ってるのはIDLEです。Windowsで利用しております。
発生している問題・エラーメッセージ
SyntaxError: invalid syntax
該当のソースコード
Python3
1>>> disaste=True 2>>> if disaste: 3 print("Woe") 4else: 5
if文の中にelseなどを含めて改行。
補足情報(FW/ツールのバージョンなど)
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
私も知らなかったエラーなので、勉強になりました。
以下に分かったことなど書きます。参考に。
(私はiPython使いなのですが、同じ対話型のIDLEでも同じで、説明がつくと思います)
あと解決法、というか回避法も書いておきます。
回答 「どのようにしたら揃えられるのかが分かりません」
どうやっても無理です。私はそう思います。
原因 たぶんPythonインタプリタの仕組み上、IDLEでもiPythonでも
if文はEnter押しで確定され、構文が文法解釈され、誤りとみなし
「SyntaxError: invalid syntax」を返してしまうからだと思います。
この場合
ELSE: をインテンドを意識し整形して
Python
1if disaste: 2 print("Woe") 3else: 4```として「Enter」を押しても、インタプリタが 5if disaste:からelse:までを解釈し、 6 7**else:文の「実行部」がない** 8 9と判断するのだと思います。 10 11> 【追記:21時38分】 12> 「if disaste:からelse:までを解釈し、**else:文の「実行部」がない**」 13> は間違いです。 14> 正しくはこの回答についた、can110様のコメントをご覧下さい。 15 16![イメージ説明](7ccaf9d9044582c4f0b7471795038e80.jpeg) 17 18--- 19 20回避法 21 22**iPython**での回避方法です。 23 24あらかじめ動かしたいPythonの構文を作成しておき、これを選択してコピー(Ctrl+C)。 25次に @paste[ENTER] を実行すると最後まで解釈され、 26問題なく実行されます。 27 28上のような問題が起きません。 29 30参考 31ttps://stackoverflow.com/questions/38997873/else-not-working-in-ipython 32 33![イメージ説明](00b2d13412a5568056eb2f3d06b91ca7.jpeg) 34![イメージ説明](230ebd90cc8589dc8d79dc4598532262.jpeg)
投稿2018/04/18 11:33
編集2018/04/18 12:39総合スコア1195
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/18 11:53
2018/04/18 12:10
2018/04/18 12:13
2018/04/18 12:18
2018/04/18 12:31
2018/04/18 12:47
2018/04/18 12:54
0
投稿2018/04/18 12:26
総合スコア1195
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
投稿2018/04/18 10:31
編集2018/04/18 12:14総合スコア35660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。