Python :: Aufgabe #314

5 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 (3750 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 (1200 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 (540 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 (3090 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)
vote_ok
von AlexGroeg (2010 Punkte) - 21.03.2021 um 13:21 Uhr
Quellcode ausblenden Python-Code

zahl = str(input('Integrzahl: '))   #3784
n = 0

def querprodukt(zahl):
    print(zahl, end = ' => ')
    global n
    p = 1
    for i in zahl:
        p *= int(i)
    zahl = str(p)    
    if len(zahl) > 1:
        n += 1       
        querprodukt(zahl)
    else: 
        n += 1
        print(zahl, '\n\nMultiplikative Ziffernwurzel =', zahl, '\nBeharrlichkeit (Schritte) =', n)
        
querprodukt(zahl)

2107554

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.