Python :: Aufgabe #314

4 Lösungen Lösungen öffentlich

Iteriertes Querprodukt

Anfänger - Python von JKooP - 24.01.2021 um 16:44 Uhr
Das Querprodukt einer Zahl ähnelt der Berechnung der Quersumme,
nur dass die Ziffern nicht addiert, sondern miteinander multipliziert werden.

3784 => 3 * 7 * 8 * 4 = 672

Nun soll aus dem Ergebnis wiederum das Querprodukt berechnet werden.

672 => 6 * 7 * 2 = 84

Und immer so weiter, bis nur noch eine Ziffer übrigbleibt.

84 => 8 * 4 = 32
32 => 3 * 2 = 6

Die Ziffer, die am Ende übrigbleibt, nennt man „multiplikative Ziffernwurzel“.
Die Anzahl der Schritte (Iterationen) wird als "Beharrlichkeit" bezeichnet.

Schreibe ein Programm, mit dem es möglich ist, sowohl die Beharrlichkeit als auch die multiplikative Ziffernwurzel einer beliebigen Integer- Zahl auszugeben.

Eine ausführliche Beschreibung findet man hier.

Viel Spaß

Lösungen:

vote_ok
von eisheiliger (770 Punkte) - 09.02.2021 um 20:05 Uhr
Quellcode ausblenden Python-Code
"""
# 314: Iteriertes Querprodukt
Das Querprodukt einer Zahl ähnelt der Berechnung der Quersumme,
nur dass die Ziffern nicht addiert, sondern miteinander multipliziert werden.
"""

erfolg = False
beharr = 1
summe = 0

zahl = input("Für Welche Zahl soll ein Iteriertes Querproduktinput gerechnet werden? ")
try:
    int(zahl)
except ValueError:
    print("Bitte Ganzzahl eingeben")

while not erfolg:
    liste = []
    summe = 1
    for zeichen in str(zahl):
        liste.append(int(zeichen))

    for i in range(0, len(liste)):
        summe *= liste[i]

    if summe > 9:
        zahl = summe
        beharr += 1
        erfolg = False
        # print(zahl)
    else:
        erfolg = True

print("Die multiplikative Ziffernwurzel lautet:", summe)
print("Die Beharrlichkeit betraegt:", beharr)
vote_ok
von felixTheC (980 Punkte) - 09.02.2021 um 22:12 Uhr
Quellcode ausblenden Python-Code
def iter_quer(num: int):

    def _iter_quer(__num: int, __behar: int = 0):
        if len(str(__num)) == 1:
            print(f"Von {num} ist die multiplikative Ziffernwurzel: {__num}\n"
                  f"Bei einer Beharrlichkeit von: {__behar}")
            return
        res = 1
        res = [res := res * int(char) for char in str(__num)][-1]
        return _iter_quer(res, __behar + 1)
    return _iter_quer(num)


Output für Beispiel von oben.

Von 3784 ist die multiplikative Ziffernwurzel: 6
Bei einer Beharrlichkeit von: 4
vote_ok
von vMaex (480 Punkte) - 11.02.2021 um 10:17 Uhr
Quellcode ausblenden Python-Code
#Querprodukt

zahl = 3784
liste = []
n_zahl = 1
counter = 0

for x in str(zahl):
    liste.append(int(x))

while len(liste) > 1:
    for x in liste:
        n_zahl *= x
    liste.clear()
    for x in str(n_zahl):
        liste.append(int(x))
    n_zahl = 1
    counter += 1

print('multiplikative Ziffernwurzel:', liste[0], '\nBeharrlichkeit:', counter)

vote_ok
von satn1241 (2590 Punkte) - 25.02.2021 um 19:07 Uhr
Quellcode ausblenden Python-Code
zahl = 3784
beharrlichkeit = 0


def quersumme(number):
    number = str(number)
    product: int = 1
    for e in number:
        product *= int(e)
    return product


while zahl > 9:
    beharrlichkeit += 1
    zahl = quersumme(zahl)

print("Die multiplikative Ziffernwurzel ist:", zahl)
print("Die Beharrlichkeit ist:", beharrlichkeit)