Is it possible for to have a python while loop purely on one line, I've tried this:
while n<1000:if n%3==0 or n%5==0:rn+=n
But it produces an error message: Invalid Syntax
at the if
statement
There are a couple of different ways we can print a newline character. The most common way is to use the echo command. However, the printf command also works fine. Using the backslash character for newline “\n” is the conventional way.
How to do a do-while loop in bash? There is no do-while loop in bash. To execute a command first then run the loop, you must either execute the command once before the loop or use an infinite loop with a break condition.
When using a compound statement in python (statements that need a suite, an indented block), and that block contains only simple statements, you can remove the newline, and separate the simple statements with semicolons.
However, that does not support compound statements.
So:
if expression: print "something"
works, but
while expression: if expression: print "something"
does not because both the while
and if
statements are compound.
For your specific example, you can replace the if expression: assignment
part with a conditional expression, so by using an expression instead of a complex statement:
while expression: target = true_expression if test_expression else false_expression
in general, or while n<1000: rn += n if not (n % 3 and n % 5) else 0
specifically.
From a style perspective, you generally want to leave that one line on it's own, though.
In your example, you try to collapse two levels of blocks / indentation into a single line, which is not allowed. You can only do this with simple statements, not loops, if statements, function definitions etc. That said, for your example there is a workaround using the ternary operator:
while n < 1000: rn += n if (n % 3 == 0 or n % 5 == 0) else 0
which reads as 'add n to rn if the condition holds, else add 0'.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With