是否有可能在一行上纯粹使用Python while循环?我尝试过以下代码:
while n<1000:if n%3==0 or n%5==0:rn+=n
但是它会产生一个错误信息:无效语法,位于
if
语句处。是否有可能在一行上纯粹使用Python while循环?我尝试过以下代码:
while n<1000:if n%3==0 or n%5==0:rn+=n
if
语句处。当在Python中使用复合语句(需要套件,缩进块的语句),并且该块仅包含简单语句时,您可以删除换行符,并使用分号;
将简单语句分隔开。
但是,这不支持复合语句。
因此:
if expression: print "something"
使用单个简单语句也可以实现,但是组合语句更为常见。
while expression: print("something"); print("something else")
while expression: if expression: print "something"
while expression: target = true_expression if test_expression else false_expression
一般来说,或者更具体地说,在编写程序时,如果 n 小于 1000,将执行 rn += n,除非 n 不同时是 3 和 5 的倍数,否则执行 rn += 0。
从风格的角度来看,通常希望将这一行单独处理。
?:
语句等效的语句?如果有的话,它应该能够胜任。 - asheeshrtrue_expression if expression else false_expression
。 - Martijn Pieters;
,而不是冒号:
,用于分隔简单语句。例如,在Python中,您可以执行print('foo'); print('bar')
,因为调用表达式语句是一个简单语句。我还谈到了复合语句,这些使用冒号:
。 - Martijn Pieterswhile n < 1000: rn += n if (n % 3 == 0 or n % 5 == 0) else 0
这段代码的意思是:如果条件成立,将数字 n 加到 rn 中,否则加 0。
rn = 100
for n in range(10): rn += n if (n%3==0 or n%5==0) else 0