是否有可能有while循环纯粹是在一行一条巨蟒,我已经试过这样:While循环的单行
while n<1000:if n%3==0 or n%5==0:rn+=n
但它产生的错误信息:在if
声明
Invalid Syntax
是否有可能有while循环纯粹是在一行一条巨蟒,我已经试过这样:While循环的单行
while n<1000:if n%3==0 or n%5==0:rn+=n
但它产生的错误信息:在if
声明
Invalid Syntax
在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
明确。
从风格的角度来看,你通常希望自己留下那一行。
在您的示例中,您尝试将两个块/缩进级别合并为一行,这是不允许的。
while n < 1000: rn += n if (n % 3 == 0 or n % 5 == 0) else 0
其内容为“添加n至RN如果:你只能用简单的语句,不循环,if语句,函数定义等。这就是说,你比如有使用三元运算符一种变通方法做到这一点条件成立,否则加0。
它是更多钞票做同样的事情:
rn = 100
for n in range(10): rn += n if (n%3==0 or n%5==0) else 0
你为什么不试试* *呢?这是一个无限循环,但就Python而言,它将起作用。 – 2013-03-03 12:39:48
@MartijnPieters我有,它不起作用 – user2128561 2013-03-03 12:40:28
“它不工作”不是问题的描述。 *什么*不起作用?你期望发生什么,发生了什么?你得到了什么错误? – 2013-03-03 12:41:03