Wandeln Sie in Python römische Zahlen in ganze Zahlen um

Shikha Chaudhary 10 Oktober 2023
  1. Wandeln Sie in Python römische Zahlen in ganze Zahlen um
  2. Python-Programm zum Konvertieren römischer Zahlen in Ganzzahlen in Python
  3. Verwenden Sie Python-Wörterbücher, um in Python römische Ziffern in ganze Zahlen umzuwandeln
  4. Verwenden Sie das Python-Roman-Modul, um in Python römische Ziffern in Ganzzahlen umzuwandeln
  5. Abschluss
Wandeln Sie in Python römische Zahlen in ganze Zahlen um

Als Kinder haben wir alle gelernt, wie man römische Zahlen in ganze Zahlen umwandelt. Nun, wenn wir Programmierer sind, lassen Sie uns ein Python-Programm erstellen, das dies für uns erledigt.

In diesem Artikel lernen wir, wie man mit Python römische Zahlen in ganze Zahlen umwandelt.

Wandeln Sie in Python römische Zahlen in ganze Zahlen um

Bevor wir zum eigentlichen Code übergehen, lassen Sie uns die Regeln für die Umwandlung römischer Zahlen in ganze Zahlen überarbeiten. Hier sind die grundlegenden Symbole, die für bestimmte ganze Zahlen verwendet werden:

Integer      Roman Numeral
   1               I
   5               V
   10              X
   50              L
   100             C
   500             D
   1000            M

Wir wissen, dass wir den entsprechenden Wert einer ganzen Zahl aus einer gegebenen Folge römischer Zahlen finden können. Aber wir müssen uns dabei an einige Regeln halten.

  1. Wenn die Werte der Symbole bei einer gegebenen Folge römischer Zahlen von links nach rechts abnehmen oder gleich bleiben, addieren wir ihre ganzzahligen Äquivalente, um die endgültige Antwort als Ganzzahl zu erhalten.

    XVII
    
    X - 10
    V - 5
    I - 1
    I - 1
    
    10 + 5 + 1 + 1 = 17
    

    Im obigen Beispiel nehmen die Werte von links nach rechts ab. Also addieren wir sie alle und erhalten 17 als ganzzahligen Wert.

  2. Wenn sich die Werte der Symbole für eine gegebene Folge römischer Zahlen von links nach rechts erhöhen, subtrahieren wir die ganzzahligen Äquivalente des kleineren Werts vom größeren, um das endgültige Ergebnis als Ganzzahl zu erhalten.

    XL
    
    X - 10
    L - 50
    
    50 - 10 = 40
    

    Im obigen Beispiel steigen die Werte von links nach rechts. Also subtrahieren wir sie, um 40 als ganzzahligen Wert zu erhalten.

Sie müssen sich diese beiden Regeln merken, wenn Sie den Code zum Konvertieren einer römischen Zahl in eine ganze Zahl schreiben. Beachten Sie auch, dass wir neben Wörterbüchern noch einige weitere Möglichkeiten verwenden können, um eine römische Zahl in eine Ganzzahl umzuwandeln.

Schauen wir sie uns nacheinander an.

Python-Programm zum Konvertieren römischer Zahlen in Ganzzahlen in Python

Der einfachste Ansatz, eine römische Zahl in eine ganze Zahl umzuwandeln, ist die Verwendung der if-Anweisung, um die grundlegenden römischen Symbole zu speichern. Hier ist der Code für dasselbe.

# function to store the basic roman symbols
def map_symbols(s):
    if s == "I":
        return 1
    if s == "V":
        return 5
    if s == "X":
        return 10
    if s == "L":
        return 50
    if s == "C":
        return 100
    if s == "D":
        return 500
    if s == "M":
        return 1000
    return -1


# function to perform the conversion
def change_roman_to_int(roman):
    ans = 0
    i = 0

    while i < len(roman):
        x1 = map_symbols(roman[i])

        if i + 1 < len(roman):
            x2 = map_symbols(roman[i + 1])

            if x1 >= x2:
                ans = ans + x1
                i = i + 1
            else:
                ans = ans + x2 - x1
                i = i + 2

        else:
            ans = ans + x1
            i = i + 1

    return ans


# driver code
r = input("Enter the roman numeral: ")
print("The integer equivalent is: ")
print(change_roman_to_int(r))

Ausgang:

Enter the roman numeral: MLXVI
The integer equivalent is:
1066

Schauen wir uns die Funktionsweise dieses Codes an.

Wenn wir als Eingabe eine lateinische Zeichenfolge eingeben, wird diese in der Variablen r gespeichert, die dann an die Funktion change_roman_to_int übergeben wird. Wir verwenden eine while-Schleife innerhalb dieser Funktion, um über den gesamten String zu iterieren.

Während die while-Schleife jeden Wert durchläuft, machen die if-else-Anweisungen innerhalb der while-Schleife Folgendes:

  1. Wenn der Wert des aktuellen Symbols größer oder gleich dem Wert des nächsten Symbols ist, dann wird der aktuelle Wert zur Variablen ans addiert.
  2. Andernfalls wird der Wert des nächsten Symbols zur Variablen ans addiert und anschliessend der aktuelle Wert davon subtrahiert.

So funktioniert dieser Code im Wesentlichen.

Schauen wir uns nun eine andere Methode an, bei der wir Python-Wörterbücher verwenden, um römische Zahlen in Ganzzahlen umzuwandeln.

Verwenden Sie Python-Wörterbücher, um in Python römische Ziffern in ganze Zahlen umzuwandeln

Dabei bleibt die Grundidee gleich. Das einzige, was sich ändert, ist, dass wir anstelle der if-Anweisung ein Wörterbuch verwenden, um die römischen Zahlen und ihre entsprechenden ganzzahligen Werte zu speichern.

Hier ist der Code für dasselbe.

# function to convert roman numeral into an integer
def change_roman_to_int(roman):

    # dictionary to store the roman-integer values
    map_symbols = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}

    ans = 0
    for i in range(len(roman)):
        if i > 0 and map_symbols[roman[i]] > map_symbols[roman[i - 1]]:
            ans += map_symbols[roman[i]] - 2 * map_symbols[roman[i - 1]]
        else:
            ans += map_symbols[roman[i]]
    return ans


# driver code
r = input("Enter the roman numeral: ")
print("The integer equivalent is: ")
print(change_roman_to_int(r))

Ausgang:

Enter the roman numeral: MMMCMLXX
The integer equivalent is:
3970

Beachten Sie, dass Sie die for-Schleife oder die while-Schleife verwenden können, um über die Eingabezeichenfolge zu iterieren, da beide ähnlich funktionieren.

Sie können die Funktion enumerate auch mit einem Wörterbuch verwenden, wie im folgenden Code.

# function to convert roman numeral into an integer
def change_roman_to_int(roman):

    # dictionary to store the roman-integer values
    map_symbols = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}

    ans = 0
    l = len(roman)
    for (i, v) in enumerate(roman):
        if i < l - 1 and map_symbols[v] < map_symbols[roman[i + 1]]:
            ans -= map_symbols[v]
        else:
            ans += map_symbols[v]

    return ans


# driver code
r = input("Enter the roman numeral: ")
print("The integer equivalent is: ")
print(change_roman_to_int(r))

Ausgang:

Enter the roman numeral: MCMXCIV
The integer equivalent is:
1994

Wir haben nur die 7 grundlegenden römischen Symbole in das Wörterbuch aufgenommen. Wir können den Code noch weiter vereinfachen, wenn wir weitere benutzerdefinierte Symbole hinzufügen.

Sehen Sie sich den unten angegebenen Code an.

# function to change a roman numeral into an integer
def change_roman_to_int(roman):
    custom_symbols = {"IV": -2, "IX": -2, "XL": -20, "XC": -20, "CD": -200, "CM": -200}
    map_symbols = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
    ans = 0

    for i in roman:
        ans += map_symbols[i]

    for i in range(len(roman) - 1):
        merge = str(roman[i] + roman[i + 1])
        if merge in custom_symbols:
            ans += custom_symbols[merge]

    return ans


# driver code
r = input("Enter the roman numeral: ")
print("The integer equivalent is: ")
print(change_roman_to_int(r))

Ausgang:

Enter the roman numeral: MCMXCIV
The integer equivalent is:
1994

Sind Sie nicht überrascht von der Cleverness dieses Codes? Lassen Sie uns sehen, wie dieser Code funktioniert.

Innerhalb der Funktion change_roman_to_int haben wir zwei Wörterbücher: das Wörterbuch map_symbols mit den üblichen 7 Werten und das Wörterbuch custom_symbols mit negativen Werten, die einem Paar römischer Symbole entsprechen.

Außerdem addiert die erste for-Schleife die ganzzahligen Werte aller römischen Symbole und speichert die Summe in der Variablen ans. So sieht dieser Schritt aus:

MCMXCIV
M = 1000, C = 100, M = 1000, X = 10, C = 100, I = 1, V = 5

1000 + 100 + 1000 + 10 + 100 + 1 + 5 = 2216
ans = 2216

Dann iteriert die zweite for-Schleife über die römische Zeichenfolge, nimmt jeweils zwei Symbole und speichert sie als Zeichenfolge in der Variablen merge. Die if-Anweisung innerhalb dieser for-Schleife prüft, ob das zusammengeführte Paar im Wörterbuch custom_symbols vorhanden ist.

Falls gefunden, wird der entsprechende negative Wert zur Variablen ans hinzugefügt. So sieht dieser Schritt aus:

MC - Not found

CM - Found
ans = 2216 + (-200)
ans = 2016

MX - Not found

XC - Found
ans = 2016 + (-20)
ans = 1996

CI - Not found

IV - Found
ans = 1996 + (-2)
ans = 1994

So funktioniert dieser Code im Wesentlichen.

Wir haben diesen ganzen Code schon so lange geschrieben. Jetzt lehnen wir uns zurück und lassen Python die Arbeit erledigen.

Verwenden Sie das Python-Roman-Modul, um in Python römische Ziffern in Ganzzahlen umzuwandeln

Wie kann jemand Python benutzen und nicht wissen, dass es ein Modul geben muss, das Funktionen hat, um eine römische Zahl in eine Ganzzahl umzuwandeln? Nun, dieses Modul heißt roman.

Um dieses Modul herunterzuladen, führen Sie den folgenden Befehl auf cmd aus.

pip install roman

Ausgang:

Downloading roman-3.3-py2.py3-none-any.whl (3.9 kB)
Installing collected packages: roman
Successfully installed roman-3.3

Sie müssen die obige Meldung sehen, sobald das Modul installiert ist.

Jetzt können wir dieses Modul in unseren Code importieren und die Funktion fromRoman() verwenden, um eine beliebige römische Zahl in eine Ganzzahl umzuwandeln.

import roman

x = roman.fromRoman("MCMXCIV")
print(x)

Ausgang:

1994

Unter diesem Link erfahren Sie mehr über Pythons roman-Modul.

Abschluss

In diesem Artikel haben wir uns einige sehr interessante Möglichkeiten angesehen, eine römische Zahl in Python in eine ganze Zahl umzuwandeln. Wir haben die Python-Anweisungen if und Python-Wörterbücher verwendet, um dies zu erreichen.

Außerdem haben wir uns angesehen, wie wir negative Werte für römische Paare verwenden können, um den Code einfacher und kürzer zu machen. Zuletzt haben wir die Verwendung des Moduls roman von Python gesehen, das die Funktion fromRoman() verwendet, um eine römische Zahl in eine ganze Zahl umzuwandeln.

Verwandter Artikel - Python Integer