【问题标题】:Input a string with a comparison operator and perform the comparison on an array index输入带有比较运算符的字符串,并在数组索引上执行比较
【发布时间】:2021-07-01 04:41:12
【问题描述】:

到目前为止,这是我的代码:

# Function to search for possible matches for words: and chapters:
def intSearch(term, row, index):
    """
    Index of 6: Word search
    Index of 7: Chapter search
    """
    rowValue = row[index]
    if True:
        return True
    return False

“如果为真”只是暂时的。所以我想要的是术语输入是一个比较运算符,然后是一个整数,例如'> = 334'。然后可以将这个字符串分解并与我可以使用 row[index] 的行的特定索引进行比较。如果这个比较是正确的,它将返回 True,如果不正确,它将返回 False。比较应该适用于基本上所有的运算符,包括:==、!=、>、= 和范围。

所以比较基本上看起来像:

if row[index] >= term:

其中 row[index] 是数组整数,>= 是比较运算符,term 是要比较的数字。

我可以使用很多 if 和 else 语句,虽然我不确定这会有多有效。

希望我说清楚了。谢谢!

【问题讨论】:

  • 如果你想管理多个条件,那么 if-elif-else 是正确的选择。与其他语言不同,Python 不支持更适合复杂的基于案例的执行的 switch-case 语句。
  • 只是不确定如果我必须为每个操作员进行测试会有多效率
  • 不要过早地优化你的代码,先让它工作,测试它,然后如果它很慢找出问题。有一些慢的东西总比没有代码好:)
  • 所以该函数只是将一个项目与给定的术语进行比较?你可以做return row[index] >= term。对不起,如果我理解错了,那是你想要做的吗?

标签: python python-3.x


【解决方案1】:

对于这类问题有两个非常有用的概念,标准operator 库和标准dictionary

例子:

import operator as op

op_map = {
    "==": op.eq,
    "!=": op.ne,
    ">": op.gt,
    "<": op.lt,
    "<=": op.le,
    ">=": op.ge,
}

x = 10
y = 0

for op_str in op_map:
    print(f"{x} {op_str} {y}: {op_map[op_str](x, y)}")

输出:

10 == 0: False
10 != 0: True
10 > 0: True
10 < 0: False
10 <= 0: False
10 >= 0: True

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 2012-10-05
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多