簡體   English   中英

雖然循環一線

[英]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"

不是因為whileif語句都是復合的。

對於您的特定示例,您可以使用條件表達式替換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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM