Skip to content
Snippets Groups Projects
Commit 91c5950b authored by Marvin Serchimo's avatar Marvin Serchimo
Browse files

coverter

parent 8f4110e9
No related branches found
No related tags found
No related merge requests found
import unittest
from abc import ABC, abstractmethod
# Interface (abstrakte Basisklasse)
class IConverter(ABC):
@abstractmethod
def convert(self, input):
pass
# Konkrete Implementierung des Interfaces
class RomanConverter(IConverter):
def convert(self, input):
# Bei Eingabe mehrerer Zahlen wie "4,3"
if isinstance(input, str) and "," in input:
return "Bitte nur eine ganze Zahl eingeben"
# Typprüfung und Fehlerbehandlung
try:
if isinstance(input, float):
return "Bitte ganze Zahlen eingeben"
if isinstance(input, str):
if not input.isdigit():
return "Bitte ganze Zahlen eingeben"
input = int(input)
number = int(input)
except (ValueError, TypeError):
return "Bitte ganze Zahlen eingeben"
if number == 0:
return "Es gibt keine römische Null"
if number < 0:
return "Es sind nur positive Zahlen zum konvertieren erlaubt"
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, symbol in roman_numerals:
while number >= value:
result += symbol
number -= value
return result
# Testklasse mit 8 funktionierenden Tests
class TestRomanConverter(unittest.TestCase):
def setUp(self):
self.converter = RomanConverter()
# Bei Eingabe der Zahl 1 soll "I" ausgegeben werden
def test_1(self):
self.assertEqual(self.converter.convert(1), "I")
# Bei Eingabe der Zahl 4 soll "IV" ausgegeben werden
def test_4(self):
self.assertEqual(self.converter.convert(4), "IV")
# Bei Eingabe der Zahl 21 soll "XXI" ausgegeben werden
def test_21(self):
self.assertEqual(self.converter.convert(21), "XXI")
# Bei Eingabe der Zahl 1000 soll "M" ausgegeben werden
def test_1000(self):
self.assertEqual(self.converter.convert(1000), "M")
# Bei Eingabe der Zahl 0 soll "Es gibt keine römische Null" ausgegeben werden
def test_0(self):
self.assertEqual(self.converter.convert(0), "Es gibt keine römische Null")
# Bei Eingabe eines Floats (4.3) soll "Bitte ganze Zahlen eingeben" ausgegeben werden
def test_float(self):
self.assertEqual(self.converter.convert(4.3), "Bitte ganze Zahlen eingeben")
# Bei Eingabe eines negativen Werts (-5) soll "Es sind nur positive Zahlen zum konvertieren erlaubt" ausgegeben werden
def test_negative(self):
self.assertEqual(self.converter.convert(-5), "Es sind nur positive Zahlen zum konvertieren erlaubt")
# Bei Eingabe von mehreren Werten wie "4,3" soll "Bitte nur eine ganze Zahl eingeben" ausgegeben werden
def test_multiple_values(self):
self.assertEqual(self.converter.convert("4,3"), "Bitte nur eine ganze Zahl eingeben")
# Testausführung
if __name__ == '__main__':
unittest.main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment