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

Du hast eine Idee für ein Projekt?
Antworten
NeuINFling
User
Beiträge: 10
Registriert: Freitag 4. November 2016, 11:55

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
Zuletzt geändert von Anonymous am Freitag 4. November 2016, 12:39, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
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.
NeuINFling
User
Beiträge: 10
Registriert: Freitag 4. November 2016, 11:55

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
NeuINFling
User
Beiträge: 10
Registriert: Freitag 4. November 2016, 11:55

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...
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Antworten