#Test_Converter_Römische_Zahlen import unittest def convert(n: int) -> str: roman_numerals = { 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" } result = "" for value in sorted(roman_numerals.keys(), reverse=True): #Schleife, die über die Schlüssel (die Dezimalzahlen) des roman_numerals-Dictionaries iteriert und in absteigender reienfolge zurück gibt durch value nimmt in jeder Iteration den Wert des nächsten sortierten Schlüssels an while n >= value: #Dies startet eine while-Schleife, die so lange ausgeführt wird, wie der Wert von n größer oder gleich dem aktuellen value (der Dezimalzahl) ist result += roman_numerals[value] #fügt die entsprechende römische Ziffer (den Wert aus dem roman_numerals-Dictionary) zur result-Zeichenkette hinzu. n -= value # aktuelle value - n return result class TestRomanConverter(unittest.TestCase): def test_1(self): self.assertEqual(convert(1), "I") # Erwartet "I" für 1 def test_10(self): self.assertEqual(convert(10), "X") # Erwartet "X" für 10 def test_21(self): self.assertEqual(convert(21), "XXI") # Erwartet "XXI" für 21 def test_50(self): self.assertEqual(convert(50), "L") # Erwartet "L" für 50 def test_100(self): self.assertEqual(convert(100), "C") # Erwartet "C" für 100 def test_1000(self): self.assertEqual(convert(1000), "M") # Erwartet "M" für 1000 def test_1999(self): self.assertEqual(convert(1999), "MCMXCIX") #Erwartet "MCMXCIX" für 1999 if __name__ == "__main__": unittest.main()