gpt4 book ai didi

python - 有没有办法根据某些 bool 值在逻辑运算符之间进行交换?

转载 作者:行者123 更新时间:2023-11-28 22:39:48 24 4
gpt4 key购买 nike

我正在实现括号功能以供练习。该函数将查明某个范围,在该范围内发生某些函数的最小值或最大值。

为了提供识别最小值或最大值的选项,我允许用户传入 bool 值 findMin。

下面的代码块标识了一个最小值;此 block 与标识最大值的 block 之间的唯一区别是比较运算符(“<”和“>”)必须相互交换。我可以通过插入一个相同的代码块(但用于交换的比较运算符)轻松地进行交换,该代码块由仅在用户想要找到最大值时才输入的 if 语句处理。无需添加另一个这样的代码块,有没有办法交换比较运算符“<”和“>”?

def bracket (func, x, findMin, stepSize = 0.001):

# Determine which direction is downward
increment = 0.001
if func(x+stepSize) > func(x):
stepSize *= -1
increment *= -1

pointer = x + stepSize
previousPointer = x
while(func(pointer) < func(previousPointer)):
previousPointer = pointer
pointer += stepSize
stepSize += increment

a = min(pointer, previousPointer)
b = max(pointer, previousPointer)

return a,b

最佳答案

在 Python 中,您可以使用 operator module 将比较运算符表示为函数.

例如表达式 1 > 2 等效于调用 operator.gt(1, 2)

这是一种将其传递给函数的方法:

import operator

def test(arg1, arg2, compare_function):

if compare_function(arg1, arg2):
print("condition is true")
else:
print("condition is false")

输出:

>>> test(1, 2, operator.lt)
condition is true
>>> test(1, 2, operator.gt)
condition is false

关于python - 有没有办法根据某些 bool 值在逻辑运算符之间进行交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34373588/

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