Python Функция дает ошибку при вычислении наибольшего общего коэффициента - PullRequest
0 голосов
/ 08 февраля 2020

Я создал функцию для вычисления HCF из 2 чисел. Когда я использовал свои параметры как 24 и 36, я получаю правильный ответ, но когда я использовал разные числа, я получаю ошибку: ValueError: max () arg является пустой последовательностью. Вот код:

def computeHCF(num1,num2):
lst1 = []
lst2 = []
for i in range(2,num1+1):
    if i > 1:
        if num1 % i == 0:
            lst1.append(i)
for i in range(2,num2+1):
    if i > 1:
        if num2 % i == 0:
            lst2.append(i)

HCF = []
for e1,e2 in zip(lst1,lst2):
    if e1 == e2:
         HCF.append(e1)
HCF = max(HCF)
print('The HCF is :',HCF)

Я знаю, что есть другие решения для этого, но я попытался реализовать этот метод. Редактировать: игнорировать отступ здесь. Я знаю, где лог c является неправильным.

1 Ответ

0 голосов
/ 08 февраля 2020

Zip выполняет итерации по обоим спискам одновременно, поэтому он найдет HCF, только если факторы находятся в одинаковых позициях в lst1 и lst2. Вместо этого вы просто хотите найти общие элементы в двух списках. Попробуйте следующее:

HCF = []
for e1 in lst1:
    if e1 in lst2:
         HCF.append(e1)

В качестве альтернативы, с здесь :

HCF = list(set(lst1).intersection(lst2))

Это работает с 24 и 36, потому что их факторы совпадают. Я думаю, вы получили 4 в качестве ответа?

24: 2, 3, 4, 6, 8, 12
36: 2, 3, 4, 9, 12, 18
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...