虽然循环一线

use*_*561 6 python while-loop

是否有可能在一条线上纯粹在一条线上运行python,我试过这个:

while n<1000:if n%3==0 or n%5==0:rn+=n
Run Code Online (Sandbox Code Playgroud)

但它产生了一条错误信息:Invalid Syntaxif声明中

Mar*_*ers 12

在python中使用复合语句(需要套件,缩进块的语句),并且该块包含简单语句时,可以删除换行符,并用分号分隔简单语句.

然而,这并不能支持复合语句.

所以:

if expression: print "something"
Run Code Online (Sandbox Code Playgroud)

有效,但是

while expression: if expression: print "something"
Run Code Online (Sandbox Code Playgroud)

确实不是因为无论是whileif语句化合物.

对于您的特定示例,您可以if expression: assignment使用条件表达式替换零件,因此通过使用表达式而不是复杂语句:

while expression: target = true_expression if test_expression else false_expression
Run Code Online (Sandbox Code Playgroud)

通常,或while n<1000: rn += n if not (n % 3 and n % 5) else 0具体而言.

从风格的角度来看,您通常希望将这一行留在它自己的位置.

  • @AshRj有,看我的回答. (2认同)

l4m*_*mpi 5

在您的示例中,您尝试将两级块/缩进折叠成一行,这是不允许的。您只能使用简单的语句来执行此操作,而不能使用循环、if 语句、函数定义等。也就是说,对于您的示例,有一种使用三元运算符的解决方法:

while n < 1000: rn += n if (n % 3 == 0 or n % 5 == 0) else 0
Run Code Online (Sandbox Code Playgroud)

其读作是“如果条件成立,则将 n 添加到 rn,否则添加 0”。