Конкретный случай не передаст elif в строке 8: - PullRequest
1 голос
/ 21 мая 2019

Я решаю головоломки на 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 <= 3 </p>

2 <= 4 и 4 <= 4 </p>

вывод всех равен true, это те значения, которые появляются, когда я их печатаю раньше, если блок / elif / else, но по какой-то причине функция "damn" возвращает false.

У кого-нибудь есть идея, почему это происходит, и вы можете это объяснить?

1 Ответ

1 голос
/ 21 мая 2019

Ваш первый оператор if проходит:

if a + c <= n:

Таким образом, код никогда не достигает ветви elif, которую вы хотите:

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

2 + 1 (3) <= 4 </p>

Возможно, вы хотите объединить операторы if и не вкладывать их:

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