我需要帮助修理我的两个功能

2024-05-08 04:52:20 发布

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

我正在尝试用python实现一个候选消除算法。我需要写两个函数,一个用于找到更一般的假设,另一个用于找到更具体的假设。 根据这个定义,“问号”的数目越多,“零”的数目越少,意味着越普遍,反之亦然。 但我的功能不起作用。它们只返回false。问题出在哪里?你知道吗

def more_specific(a, b):
    """
    Checks if a is more specific than b.
    """
    aa = 1
    bb = 1
    for i in range(len(a)):
        if a[i] == '0':
           aa+=1
        elif a[i] == '?':
           aa-=1

    for k in range(len(b)):
        if b[k] == '0':
           bb+=1
        elif b[k] == '?':
           bb-=1


    return aa > bb


def more_general(a, b):
    """
       Checks if a is more general than b.
    """
    aa = 1
    bb = 1
    for i in range(len(a)):
        if a[i] == '?':
           aa+=1
        elif a[i] == '0':
           aa-=1

    for k in range(len(b)):
        if b[k] == '?':
           bb+=1
        elif b[k] == '0':
           bb-=1

    return aa > bb

尝试以下示例:

a = [('far','?', '?', '?')]
b = [('ss' , '0','0','i')]

Tags: inforlenifisdefmorerange
1条回答
网友
1楼 · 发布于 2024-05-08 04:52:20

ab的数据格式错误。只需移除外部[]

>>> a = ('far','?', '?', '?')
>>> b = ('ss' , '0','0','i')
>>> more_specific(b, a)
True

列表中只有一个元素是元组:

>>> len([('far','?', '?', '?')])
1

但是你要检查元组的所有元素:

>>> len(('far','?', '?', '?'))
4

相关问题 更多 >