純粋に1行でpython whileループを実行することは可能ですか?私はこれを試しました:
while n<1000:if n%3==0 or n%5==0:rn+=n
しかし、エラーメッセージが生成されます: Invalid Syntax
at the if
statement
純粋に1行でpython whileループを実行することは可能ですか?私はこれを試しました:
while n<1000:if n%3==0 or n%5==0:rn+=n
しかし、エラーメッセージが生成されます: Invalid Syntax
at the if
statement
Python で複合ステートメント(スイート、インデントされたブロックを必要とするステートメント) を使用し、そのブロックに単純なステートメントのみが含まれている場合、改行を削除し、単純なステートメントをセミコロンで区切ることができます。
ただし、これは複合ステートメントをサポートしていません。
そう:
if expression: print "something"
動作しますが、
while expression: if expression: print "something"
とステートメントの両方が複合であるため、そうではありません。while
if
特定の例では、そのif expression: assignment
部分を条件式に置き換えることができるため、複雑なステートメントの代わりに式を使用します。
while expression: target = true_expression if test_expression else false_expression
一般的に、またはwhile n<1000: rn += n if not (n % 3 and n % 5) else 0
具体的に。
ただし、スタイルの観点からは、通常、その 1 行はそのままにしておく必要があります。
あなたの例では、2 レベルのブロック/インデントを 1 行に折りたたもうとしていますが、これは許可されていません。これは、ループ、if ステートメント、関数定義などではなく、単純なステートメントでのみ行うことができます。つまり、あなたの例では、三項演算子を使用した回避策があります。
while n < 1000: rn += n if (n % 3 == 0 or n % 5 == 0) else 0
これは、「条件が成立する場合は rn に n を追加し、そうでない場合は 0 を追加する」と読みます。
同様のことを行うことが可能です:
rn = 100
for n in range(10): rn += n if (n%3==0 or n%5==0) else 0