具体情况不会通过第8行的elif:

2024-10-02 18:24:33 发布

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

我在Dcoder上解决难题,我决定硬编码解决方案,但它仍然没有通过所有测试

我将代码扩展到现在的样子(我粘贴的代码),以包含我能想到的所有案例。我发现了一个应该通过的具体案例,但由于某种原因,这种情况没有发生

我还尝试在if/elif块中添加括号,但这并没有改变任何事情(我没想到会这样,但我还是尝试了)

def damn(a, b, c, d, n, m):
    if a+c <= n:
        if b <= m and d <= m:
            return True
    elif a+d <= n:
        if b <= m and c <= m:
            return True
    elif a+c <= m:
        if b <= n and d <= n:
            return True
    elif a+d <= m:
        if b <= n and c <= n:
            return True
    elif b+c <= n:
        if a <= m and d <= m:
            return True
    elif b+d <= n:
        if a <= m and c <= m:
            return True
    elif b+c <= m:
        if a <= n and d <= n:
            return True
    elif b+d <= m:
        if a <= n and c <= n:
            return True
    else:
        return False

if damn(2, 2, 1, 4, 4, 3):
    print("Yes")
else:
    print("No")
elif a+c <= m:
        if b <= n and d <= n:
            return True

这应该是:

3<;=三,

2<;=4和4<;=四,

所有的输出都是true,这些是在if/elif/else块之前打印它们时出现的值,但由于某种原因,函数“damn”返回false

有人知道为什么会这样吗?你能解释一下吗


Tags: and代码lttrue编码returnif解决方案
1条回答
网友
1楼 · 发布于 2024-10-02 18:24:33

您的第一个if语句正在通过:

if a + c <= n:

因此,代码永远不会到达您希望它到达的elif分支:

a, b, c, d, n, m  
2, 2, 1, 4, 4, 3

2 + 1 ( 3 ) <= 4

您可能希望组合if语句,而不是嵌套它们:

if a + c <= n and b <= m and d <= m:

相关问题 更多 >