在Python中打印时如何减少变量?

2024-05-14 13:05:28 发布

您现在位置:Python中文网/ 问答频道 /正文

一些ifelse可以重写1并缩短2(codegolf样式),因为boolean在Python中可以充当整数。例如,if a<b:return a可以重写为return("",a)[a<b]。在

在这种情况下(我简化了可读性条件)

if a<b: print(a)

可以重写为以下两种:

^{pr2}$

(如果忽略换行符,则可以使用end="")。在

我想减少一个变量n(整个过程在while循环中,条件是n),当{}在所有事情之上为真时,例如

if a<b: 
    print(a)
    n-=1

同时使用上述语法技巧。 在C中,(n/n--)-1不仅等于0,而且从n中减去1。在Python中,我还没有找到这样做的方法。我尝试了一些无效的语法:

print(("",a+(n/n--)-1)[a<b])

(print(""),(print(a);n-=1))[a<b]

当条件为真时,如何使用此“技巧”递减变量(并打印a)?


1,2,3:这些陈述并不总是正确的


Tags: 技巧returnif语法情况样式整数条件
1条回答
网友
1楼 · 发布于 2024-05-14 13:05:28

Python不是C语言。首先,Python没有减量运算符,因此print(n )无法工作。另一方面,Python中的赋值是语句,而不是表达式,因此print(n-=1)无法工作。在

如果您确实希望print语句有副作用,它可以调用一个函数:

def decrement():
    global n
    n -= 1
    return n
print(decrement())

但是不要。没有人会认为你的print语句有副作用,所以当注释掉print语句改变程序结果时,每个人都会感到惊讶。在

编辑:我刚刚注意到这是一个代码高尔夫问题。那样的话,我的文体学建议就不是真的有效了。每个人都认为golfed代码很奇怪。在

如果您的目标是将if语句改为表达式,那么就玩一下and和{},它们会短路。例如:

^{pr2}$

或者使用if ... else表达式

(print(a),decrement()) if a<b else None

相关问题 更多 >

    热门问题