Skip to content
Snippets Groups Projects
Commit 2e9f4761 authored by Daniel Rafeh's avatar Daniel Rafeh
Browse files

Test successful

parent f11ce06d
No related branches found
No related tags found
No related merge requests found
Pipeline #20041 passed
......@@ -10,9 +10,13 @@
# Bei der Eingabe von Zahlen mit einem benutzerdefinierten Trennzeichen soll die Summe der Zahlen berechnet werden (z.B. //;\n1;2 = 3)
# Bei Eingabe von Zahlen >1000 sollen diese ignoriert werden (z.B. 2 + 1001 = 2)
# Bei der Eingabe von Zahlen mit einem benutzerdefinierten Trennzeichen soll die Summe der Zahlen berechnet werden. Trennzeichen können unbegrenzt lang sein (z.B. “//[***]\n1***2***3” = 6).
# Bei der eingabe verschiedener Trennzeichen sollen trotzdem die Zahlen erkannt und zusammen addiert werden (--;\n1;2 = 3)
import unittest
from abc import ABC, abstractmethod
class IStringCalculator(ABC):
@abstractmethod
def add(self, numbers: str) -> int:
......@@ -25,14 +29,29 @@ class StringCalculator(IStringCalculator):
if numbers == "":
return 0
'''Standard-Trennzeichen'''
delimiter = ";"
'''Es wird geprüft ob ein benutzerdefiniertes Trennzeichen vorhanden ist.'''
if numbers.startswith("//"):
delimiter = numbers[2:3]
numbers = numbers[4:]
list = numbers.split(delimiter)
sep = numbers.split("\n", 1)
delimiter_sep = sep[0][2:]
'''Für den Fall, dass das Trennzeichen in eckigen Klammern steht werden die Klammern entfernt und das Trennzeichen gespeichert'''
if delimiter_sep.startswith("[") and delimiter_sep.endswith("]"):
delimiter = delimiter_sep[1:-1]
else:
'''Zahlen werden aufgeteilt'''
list = numbers.replace("\n", ",").split(",")
else:
delimiter = delimiter_sep[0]
'''Entfernen der ersten Zeile, damit nur noch Zahlen übrig bleiben'''
numbers = sep[1]
'''Ersetzen von Zeilenumbrüchen mit Delimiter und ersetzen von Delimiter durch ",", um splitten zu können'''
numbers = numbers.replace("\n", delimiter).replace(delimiter, ",")
list = numbers.split(",")
result = 0
result = 0
for num in list:
......@@ -106,6 +125,9 @@ class TestStringCalculator(unittest.TestCase):
res = self.c.add("2, 1001")
self.assertEqual(res, 2)
def test_multidelimiter(self):
res = self.c.add("//[***]\n1***2***3")
self.assertEqual(res, 6)
if __name__ == "__main__":
unittest.main()
\ No newline at end of file
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