Funktionen innerhalb von Funktionen

Python ist eine sehr flexible Sprache und erlaubt es, Funktionen praktisch überall im Code zu erstellen. Man kann eine neue Funktion innerhalb eines if-Blocks, einer for-Schleife oder innerhalb einer anderen Funktion definieren:
def process(name1, name2, name3):
    def greet(name):
        if len(name) < 5:
            print(f'Hi, {name}')
        else:
            print('The name is too long')
    greet(name1)
    greet(name2)
    greet(name3)

process('Anna', 'Bob', 'Daniel')
# Hi, Anna
# Hi, Bob
# The name is too long
Hier haben wir eine neue Funktion greet() definiert, die als Hilfsfunktion dient, um die if-else-Anweisungen für alle drei Namen in der Funktion process() nicht zu wiederholen.
Beachten Sie, dass innere Funktionen Zugriff auf alle Variablen haben, die über ihnen definiert wurden. In unserem Beispiel hat die Funktion greet() also Zugriff auf name1, name2 und name3.

Herausforderung

Modifizieren Sie die Funktion so, dass sie eine Liste aller Teiler der ihr übergebenen Zahlen zurückgibt. Fügen Sie eine innere Funktion hinzu, die eine Liste der Teiler für eine einzelne Zahl zurückgibt.
def divisors(*numbers):
    ...

print(divisors(4, 5))         # [1, 2, 4, 1, 5]
print(divisors(3))            # [1, 3]
print(divisors(6, 8))         # [1, 2, 3, 6, 1, 2, 4, 8]
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue