Python Zahlen auseinandernehmen?

4 Antworten

Also du meinst sowas wie 1 * 2 * 3 * 4 * 5 *6 = 720 zum Beispiel 123456?

Das könnte man beispielsweise folgendermaßen machen...

import math
zahlen = 123456

#Auseinandernehmen der Ganzzahl zahlen:
ziffern = [int(c) for c in str(zahlen)]

#Multiplizieren der Zahlen:
produkt = math.prod(ziffern)

print(produkt)
z = '1234'
for i in map(int,z):
    print(i*i)
Woher ich das weiß:Studium / Ausbildung – Informatikstudent

dietrich2602254 
Beitragsersteller
 13.10.2021, 17:44

Nein ich meinte jede zahl soll aus der Zahlen reihe getrennt und anschließend mit sich selbst multipliziert werden.
1*1
2*2
3*3
4*4
trotzdem danke!

0
TechPech1984  13.10.2021, 17:43

das letzte ist aber kein integer sondern ein string oder literal .

1
zahlen = 123456
quadrate = [int(i)**2 for i in str(zahlen)]

print(quadrate)
# [1, 4, 9, 16, 25, 36]
Woher ich das weiß:Studium / Ausbildung

bitblt  13.10.2021, 18:21

PS: Sauberer und effizienter wäre das hier:

zahlen = 123456
quadrate = []

while zahlen:
  quadrate.append((i % 10) ** 2)
  i /= 10

quadrate = list(reversed(quadrate))
1
BlueX15  15.10.2021, 05:36
@bitblt

Darf ich Fragen warum deine Schreibweise effizienter ist? Ich finde die Variante oben schon sehr sauber...

0
bitblt  15.10.2021, 06:13
@BlueX15

Oben wird implizit ein Stringobjekt erzeugt, mit allem was dazu gehört: Speicherreservierung, Konstruktor, Formatierung, Iteration, Destruktor, ...

Das alles ist einige hundert mal aufwändiger, als meine zweite Lösung.

1
BlueX15  16.10.2021, 01:42
@bitblt

Werden Listen-Objecte anders behandelt als String-Objecte oder weniger aufwändiger?

0
bitblt  16.10.2021, 01:57
@BlueX15

Die Liste muss sowieso erzeugt werden, und danach hinten werden neue Elemente rangehängt.

Das passiert in der Schleife explizit mit append() und in der funktionalen Variante implizit mittels Generator.

Ach ja, ein Generatorobjekt muss auch noch zusätzlich erzeugt werden.

Die Schleifenvariante ist also gleich in doppelter Hinsicht effizienter. :)

1

Eine einfache Methode: In einen String umwandeln und dann Zeichen für Zeichen durchgehen. Ansonsten Modulo 10