gpt4 book ai didi

python - 如何在 Python 中打印时递减变量?

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:03 25 4
gpt4 key购买 nike

一些 ifelse也可以重写1 和缩短2(codegolf 风格),因为 bool 值在Python 中可以充当整数。例如if a<b:return a可以将3改写为return("",a)[a<b] .

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

if a<b: print(a)

可以改写为以下两种:

print(("",a)[a<b]) 

(print(""),print(a))[a<b]

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

我想递减一个变量 n (整个事情都在 while 循环中,条件是 n)当 a<b 时在一切之上都是真实的,例如。

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:这些说法并不总是正确的

最佳答案

Python 不是 C。一方面,Python 没有递减运算符,因此 print(n--) 将不起作用。另一方面,Python 中的赋值是语句,而不是表达式,因此 print(n-=1) 将不起作用。

如果你真的希望你的 print 语句有副作用,它可以调用一个函数:

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

但是不要。没有人会预料到您的 print 语句会产生副作用,因此当注释掉您的 print 语句会改变程序的结果时,每个人都会感到惊讶。

编辑:我刚刚注意到这是一个代码高尔夫问题。在那种情况下,我的文体建议并不是真的有效。每个人都希望打高尔夫球的代码很奇怪。

附言。如果您的目标是将 if 语句更改为表达式,则可以使用 andor,它们会短路。例如:

a<b and (print(a), decrement())

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

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

关于python - 如何在 Python 中打印时递减变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41149899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com