From 4833af485688162c3471a5a9a6a5c53b87d6466a Mon Sep 17 00:00:00 2001 From: Hatice Yildirim <Hatice.Yildirim@student.reutlingen-university.de> Date: Sat, 5 Apr 2025 09:13:06 +0200 Subject: [PATCH] Download Implemetierung von RafehDaniel --- Other/ReafehDaniel_1/converter.py | 182 ++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 Other/ReafehDaniel_1/converter.py diff --git a/Other/ReafehDaniel_1/converter.py b/Other/ReafehDaniel_1/converter.py new file mode 100644 index 0000000..1d5eff4 --- /dev/null +++ b/Other/ReafehDaniel_1/converter.py @@ -0,0 +1,182 @@ +# Bei Eingabe der Zahl 1 soll "I" ausgegeben werden +# Bei Eingabe der Zahl 2 soll "II" ausgegeben werden +# Bei Eingabe der Zahl 3 soll "III" ausgegeben werden +# Bei Eingabe der Zahl 4 soll "IV" ausgegeben werden +# Bei Eingabe der Zahl 5 soll "V" ausgegeben werden +# Bei Eingabe der Zahl 9 soll "IX" ausgegeben werden +# Bei Eingabe der Zahl 10 soll "X" ausgegeben werden +# Bei Eingabe der Zahl 21 soll "XXI" ausgegeben werden +# Bei Eingabe der Zahl 50 soll "L" ausgegeben werden +# Bei Eingabe der Zahl 100 soll "C" ausgegeben werden +# Bei Eingabe der Zahl 500 soll "D" ausgegeben werden +# Bei Eingabe der Zahl 1000 soll "M" ausgegeben werden +# Bei Eingabe der Zahl 1111 soll "MCXI" ausgegeben werden +# Bei Eingabe der Zahl 99 soll "XCIX" ausgegeben werden +# Bei Eingabe der Zahl 0 soll "Es gibt keine römische Null" ausgegeben werden +# Bei Eingabe der Zahl 40 soll "XL" ausgegeben werden +# Bei Eingabe eines Strings soll "Bitte ganze Zahlen eingeben" ausgegeben werden -> geändert aufgrund der Aufgabenstellung +# Bei Eingabe von Float-Werten (z.B. 4,3) soll "Bitte ganze Zahlen eingeben" ausgegeben werden. +# Bei Eingabe von negativen Werten (z.B. -5) soll "Es sind nur positive Zahlen zum konvertieren erlaubt" ausgegeben werden +# Bei Eingabe der Zahl 2025 soll "MMXXV" ausgegeben werden +# Bei Eingabe von Zeichen wie ! soll "Bitte ganze Zahlen eingeben" ausgegeben werden +# Bei Eingabe mehrerer Zahlen wie 4, 3 soll "Bitte nur eine ganze Zahl eingeben" augegeben werden +# Bei Eingabe größerer Zahlen wie z.B. 4000 soll "MMMM" ausgegeben werden +# Bei Eingabe der Zahl 30 soll "XXX" ausgegeben werden +# Bei Eingabe der Zahl 90 soll "90" ausgegeben werden +# Bei Eingabe eines leeren Strings soll "Bitte ganze Zahlen eingeben" ausgegeben werden + +import unittest +from abc import ABC, abstractmethod + +class IConverter(ABC): + @abstractmethod + def convert(self, num: int) -> str: + pass + +class Converter(IConverter): + def convert(self, num: int) -> str: + + '''Sicherstellen, dass nur eine ganze Zahl eingegeben wurde.''' + if isinstance(num, str) and len(num.split(',')) > 1: + return 'Bitte nur eine ganze Zahl eingeben' + + roman_numbers = [(1000, 'M'), (500, 'D'), (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'), (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')] + + roman_str = '' + + '''Wenn eine 0 eingegeben wird muss eine Exception folgen''' + if num == 0: + return "Es gibt keine römische Null" + + + '''Sicherstellen, dass keine Zeichen oder Strings eingegeben werden''' + if isinstance(num, int): + + '''Sicherstellen, dass keine negativen Zahlen eingegeben werden''' + if num < 0: + return "Es sind nur positive Zahlen zum konvertieren erlaubt" + + for value, numeral in roman_numbers: + + while num >= value: + roman_str += numeral + num -= value + + return roman_str + else: + return "Bitte ganze Zahlen eingeben" + + +class TestConverter(unittest.TestCase): + def setUp(self): + self.c = Converter() + + def test_convertOne(self): + res = self.c.convert(1) + self.assertEqual(res, 'I') + + def test_convertTwo(self): + res = self.c.convert(2) + self.assertEqual(res, 'II') + + def test_convertThree(self): + res = self.c.convert(3) + self.assertEqual(res, 'III') + + def test_convertFour(self): + res = self.c.convert(4) + self.assertEqual(res, 'IV') + + def test_convertFive(self): + res = self.c.convert(5) + self.assertEqual(res, 'V') + + def test_convertNine(self): + res = self.c.convert(9) + self.assertEqual(res, 'IX') + + def test_convertTen(self): + res = self.c.convert(10) + self.assertEqual(res, 'X') + + def test_convertTwentyTwo(self): + res = self.c.convert(21) + self.assertEqual(res, 'XXI') + + def test_convertFifty(self): + res = self.c.convert(50) + self.assertEqual(res, 'L') + + def test_convertHundred(self): + res = self.c.convert(100) + self.assertEqual(res, 'C') + + def test_convertFiveHundred(self): + res = self.c.convert(500) + self.assertEqual(res, 'D') + + def test_convertThousand(self): + res = self.c.convert(1000) + self.assertEqual(res, 'M') + + def test_convertFourDigit(self): + res = self.c.convert(1111) + self.assertEqual(res, 'MCXI') + + def test_convertNintyNine(self): + res = self.c.convert(99) + self.assertEqual(res, 'XCIX') + + def test_convertZero(self): + res = self.c.convert(0) + self.assertEqual(res, 'Es gibt keine römische Null') + + def test_convertFourty(self): + res = self.c.convert(40) + self.assertEqual(res, 'XL') + + def test_convertString(self): + res = self.c.convert('HUIHIN') + self.assertEqual(res, "Bitte ganze Zahlen eingeben") + + def test_convertFloat(self): + res = self.c.convert(4.3) + self.assertEqual(res, "Bitte ganze Zahlen eingeben") + + def test_convertNegative(self): + res = self.c.convert(-4) + self.assertEqual(res, "Es sind nur positive Zahlen zum konvertieren erlaubt") + + def test_convertYear(self): + res = self.c.convert(2025) + self.assertEqual(res, "MMXXV") + + def test_convertSign(self): + res = self.c.convert('!') + self.assertEqual(res, "Bitte ganze Zahlen eingeben") + + def test_convertMultipleNum(self): + res = self.c.convert('4, 3') + self.assertEqual(res, "Bitte nur eine ganze Zahl eingeben") + + def test_convertHighNum(self): + res = self.c.convert(4000) + self.assertEqual(res, "MMMM") + + def test_convertThirty(self): + res = self.c.convert(30) + self.assertEqual(res, "XXX") + + def test_convertNinety(self): + res = self.c.convert(90) + self.assertEqual(res, "XC") + + def test_convertEmpty(self): + res = self.c.convert('') + self.assertEqual(res, "Bitte ganze Zahlen eingeben") + + + + +if __name__ == "__main__": + unittest.main() -- GitLab