Skip to content
Snippets Groups Projects
Commit 4833af48 authored by Hatice Yildirim's avatar Hatice Yildirim
Browse files

Download Implemetierung von RafehDaniel

parent 4866413c
No related branches found
No related tags found
2 merge requests!8Develop2,!5RafehDaniel
# 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()
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