Выражение должно быть True, но оно становится False - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь написать большую общую функцию делителя. Но код останавливается, когда k равно 6

    def gcdIter(a,b):

    k = min(a,b)
    while(b%k != 0 and a%k != 0):
        k  = k -1

    return k

print(gcdIter(9,12))

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Я полагаю, вы имели в виду or, а не and в состоянии while.Поскольку в первой итерации k равно либо a, либо b, and не имеет особого смысла.

def gcdIter(a, b):
    k = min(a, b)
    while b % k != 0 or a % k != 0:
        k = k - 1
    return k

print(gcdIter(9, 12))
# 3
0 голосов
/ 14 марта 2019

У вас есть и, поэтому, когда b% k не равно 0, а когда% k не равно 0. Когда k равно 6, «% 6! = 0» ложно, и в итоге вы получаете истину и ложь, что ложный.

Вместо этого попробуйте использовать или.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...