是否有可能只在一行上有一个python while循环,我试过这个:
while n<1000:if n%3==0 or n%5==0:rn+=n
但它会在Invalid Syntax
语句
if
答案 0 :(得分:11)
在python中使用compound statement时(需要套件,缩进块的语句),并且该块仅包含 simple statements ,您可以删除换行符,并且用分号分隔简单语句。
但是,不支持复合语句。
所以:
if expression: print "something"
有效,但
while expression: if expression: print "something"
不,因为while
和if
语句都是复合语句。
对于特定的示例,您可以使用conditional expression替换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 :(得分:4)
在您的示例中,您尝试将两个级别的块/缩进折叠为一行,这是不允许的。你只能用简单的语句,而不是循环,if语句,函数定义等来做到这一点。也就是说,对于你的例子,有一个使用三元运算符的解决方法:
while n < 1000: rn += n if (n % 3 == 0 or n % 5 == 0) else 0
如果条件成立,则读为'添加n到rn,否则添加0'。
答案 2 :(得分:1)
可以做类似的事情:
rn = 100
for n in range(10): rn += n if (n%3==0 or n%5==0) else 0