次のpython if文を1行に書くことができるかどうかは疑問です。また、私は下のエラーを取得しています理由を知りたい:if文を使ったPython oneliner
python -c 'a=1; if True: print a; else: a=a+1'
File "<string>", line 1
a=1; if True: print a; else: a=a+1
^
SyntaxError: invalid syntax
次のpython if文を1行に書くことができるかどうかは疑問です。また、私は下のエラーを取得しています理由を知りたい:if文を使ったPython oneliner
python -c 'a=1; if True: print a; else: a=a+1'
File "<string>", line 1
a=1; if True: print a; else: a=a+1
^
SyntaxError: invalid syntax
のみsimple statements can appear in a semicolon-separate statement list:
stmt_list ::= simple_stmt (";" simple_stmt)* [";"]
if
文は複合文なので、それを含めるために無効な構文です。
セミコロンで区切られたリストに複合文を入力すると、あいまいさが発生します。これは有効な構文です:condition
がtrueの場合、どちらの割り当てがだけ実行され
if condition: a = 1; b = 1
、これはほとんどの人が直感的に文を読んでいました方法です。我々は
c = 1; if condition: a = 1; b = 1
を許可された場合には、b = 1
がif
文の一部であるかどうか、コードの読者のために不明瞭になるでしょう。
Pythonはインデントを使用してコードスイートを区切ります。インデントをセミコロン区切りのステートメントリストで使用することはできません。
私が探していたもの.. – Maroun
これはインデントだけではなく、これも無効です: 'a = 1; print(a)if true else a = a + 1' –
@Chris_Rands:これは完全に無関係の理由で無効です。合意式 'xは条件else y 'が式であり、' x'と 'y'も式でなければなりません。代入はPythonの式ではありません(Python 2では 'print(a)'もありません)。 –
エラーメッセージは表示されませんでしたが、おそらく 'SyntaxError'です。そして、いいえ、すべてを1行に入れることはできません。 1行に同じ意味のコードを書くことはできますが、同じ制御構造を使用することはできません。そして、なぜあなたはしたいですか? –
exec( 'a = 1 \ nif True:\ n \ tprint a \ nelse:\ n \ t a + = 1'); =)(スマイリーに注意してください) –
1行に同じ意味を持つコードは 'プリント1 '。 –