[英]While loop one-liner
是否有可能在一條線上純粹在一條線上運行python,我試過這個:
while n<1000:if n%3==0 or n%5==0:rn+=n
但它會產生一條錯誤消息: if
語句中的Invalid Syntax
在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
。
從風格的角度來看,您通常希望將這一行留在它自己的位置。
在您的示例中,您嘗試將兩個級別的塊/縮進折疊為一行,這是不允許的。 你只能用簡單的語句,而不是循環,if語句,函數定義等來做到這一點。也就是說,對於你的例子,有一個使用三元運算符的解決方法:
while 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.