Seite 1 von 1

Kann mir jemand erklären wie ich dieses script lese?!

Verfasst: Freitag 4. November 2016, 12:08
von NeuINFling
Hallo zusammen, :)

ich bin ein absoluter Python Neuling, der sich mit Hilfe von Büchern und Web das Programmieren ein wenig selbst bei bringen möchte.
In dem Buch Python Intensivkurs habe ich ein Programm gefunden, welches romanische Zahlen übersetzt bzw. umgekehrt. Dies fand ich allerdings ungemein kompliziert, zumal zusätzliche Testfunktionen mit implementiert wurden. Nach kurzem Suchen bin ich auf diesen Code gestoßen, jedoch verstehe ich ihn einfacher nicht im Kontext.

Wie lese ich denn nun de def int_to_roman?
Was macht Python? Klar, ich erstellen eine Liste, die die Intergers in nummerals vokabuliert.
Nun wird...
Jedes mal, wenn ich probiere Zeile für Zeile durchzugehen, komme ich ins wanken und bekomme die Übergänge nicht gefasst. Sorry... :K

Code: Alles auswählen

numeral_map = [(1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), (100, "C"), (90, "XC"),
           (50, "L"), (40, "XL"), (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")]

def int_to_rom(i):
    result = []
    for integer, numeral in numeral_map:
        count = i // integer
        result.append(numeral * count)
        i -= integer * count
    return ''.join(result)

def rom_to_int(n):
    i = result = 0
    for integer, numeral in numeral_map:
        while n[i:i + len(numeral)] == numeral:
            result += integer
            i += len(numeral)
    return result

liebe Grüße
NeuINFling

Re: Kann mir jemand erklären wie ich dieses script lese?!

Verfasst: Freitag 4. November 2016, 12:46
von BlackJack
@NeuINFling: `int_to_rom()` geht doch eigentlich. Spiel das einfach mal mit verschiedenen Zahlen durch. Selbst, mit Papier und Bleistift. Notiere Dir für jeden Schritt die Werte an die die einzelnen Namen gebunden sind. Und überprüfe diese Zwischenergebnisse mit dem was Python an diese Namen bindet in jedem Schritt. ``print`` ist Dein Freund. :-)

Ich denke der eigentliche Knackpunkt hier ist in natürlicher Sprache zu formulieren welche Bedeutung `count` hat.

Re: Kann mir jemand erklären wie ich dieses script lese?!

Verfasst: Freitag 4. November 2016, 12:59
von NeuINFling
Hi und danke für die Antwort.
Genau was du sagst ache ich gerade :wink:
Ich schreibe tatsächlich alles auf einen Block und versuche mir so die Schritte näher zu bringen und gebe dabei Beispielzahlen an.
Wie würdest du denn count beschreiben?

Kann ich unter jeder Befehlszeile einfach ein print-Befehl eintippen?

Grüße

Re: Kann mir jemand erklären wie ich dieses script lese?!

Verfasst: Freitag 4. November 2016, 16:28
von NeuINFling
Was passiert in diesem Schritt

Code: Alles auswählen

def int_to_roman(x):
    result = []
    for integer, numeral in numeral_map:
        count = i // integer
        result.append(numeral * count)
        i -= (integer * count)
        print (i- (integer * count))
i -= integer * count?
Aus der Ausgabe werde ich nicht schlau...

Re: Kann mir jemand erklären wie ich dieses script lese?!

Verfasst: Samstag 5. November 2016, 12:09
von Sirius3
@NeuINFling: in der Zeile »i -= (integer * count)« wird i verändert. Wenn Du dann beim »print« nochmals etwas abziehst, dann macht die Ausgabe natürlich wenig Sinn. Gib einfach nur i aus.