Вернуть все делители числа - Python - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу найти все делители числа в Python. Я делаю это очень хорошо в Javascript, C#, Java, но мой код Python корректно работает только с оператором print. Но я не хочу печатать делители, я хочу присвоить их какой-либо переменной или отобразить их, вызывая функцию в print.

def mainFunction(number):
    for i in range(1, number+1):
        if number % i == 0:
            return i

Ответы [ 4 ]

3 голосов
/ 02 апреля 2020

Таким образом, ваша функция вернется к первому возможному делителю (так почти всегда 1). Если вы хотите продолжить поиск после первого поиска, вы должны сохранить его, например, в списке (или использовать генератор и т. Д. c).

def mainFunction(number):
    divisors = []
    for i in range(1, number+1):
        if number % i == 0:
            divisors.append(i)
    return divisors
3 голосов
/ 02 апреля 2020

Если вы выполняете оператор return, функция немедленно завершит свое выполнение. Чтобы исправить свой код, вы можете использовать @ andeis пример или просто добавить простой список

def mainFunction(number):
    divisors = []
    for i in range(1, number+1):
        if number % i == 0:
            divisors.append(i)
    return divisors 
2 голосов
/ 02 апреля 2020

Еще один, используя генератор:

def mainFunction(number):
    for i in range(1, number+1):
        if number % i == 0:
            yield i

for divisor in mainFunction(10):
        print( divisor )
2 голосов
/ 02 апреля 2020

например, сохранение их в списке

def return_divisors(number):
      return [x for x in range(1,number+1) if number % x == 0 ]

print(return_divisors(1))
print(return_divisors(2))
print(return_divisors(10))
print(return_divisors(121))

[1]
[1, 2]
[1, 2, 5, 10]
[1, 11, 121]
...