动态递增/递减变量的值?

2024-07-05 14:26:22 发布

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

{{cd1>有时,其他变量的值是由一个负的变量来计算的。我的代码是:

def delta_value(direction):
    diff=value2-value1
    if diff > 0: ascend="+"; descend="-"
    elif diff < 0: ascend="-"; descend="+"
    if direction == "increase": return ascend
    elif direction == "decrease": return descend

def calc_max_order():
    global max_order
    if num < max_num:
        while num < max_num:
            exec("max_order%s=1" % delta_value("decrease"))
    elif num > max_num:
        while num > max_num:
            exec("max_order%s=1" % delta_value("increase"))

此代码似乎不起作用(也就是说,它不会更改max_order的值),但没有返回错误。它停留在while循环中。当calc_max_order不是函数,而是在主块中时,代码确实可以工作。但是,我想让它成为一个清理代码的函数。在

我知道大多数人都说使用exec是不明智的,但我才刚刚开始学习python,我不知道还有什么办法。我想我可以使用一堆if语句,但我想有一种更干净的方法来实现它。在

所以,说清楚,我的问题是:

有没有一种方法可以使exec("max_order%s=1" % delta_order_value("decrease"))在函数内工作,或者有没有其他方法根据delta_value的输出动态地增加/减少{}?在


Tags: 代码ifvaluediffordernummaxexec
2条回答

delta_value()更改为:

def delta_value(direction):
    diff = cmp(value2, value1)   # -1 for <, 0 for ==, 1 for >
    if direction == "increase": diff = -dif
    return diff

…同时。。。

代替exec,您现在可以:

^{pr2}$

Diff为正或负,而不是“+”或“-”

使用exec()是一个巨大的危险信号。您可以使用一个固定的+=和一个可变的delta来实现这一点。在

delta = (+1 if ascending else -1)
max_order += delta

如果你需要颠倒delta的意思,就否定它:

^{pr2}$

相关问题 更多 >