# Bei einer leeren Eingabe "" soll die Zahl 0 ausgegeben werden.
# Bei der Eingabe "1" soll die 1 ausgegeben werden.
# Bei der Eingabe von 2 Zahlen als Strings separiert durch "," (z.B. "1, 2") soll die Zahl 3 ausgegeben werden
# Bei der Eingabe "0, 5" soll die Zahl 5 ausgegeben werden.
# Bei der Eingabe von 3 Zahlen (z.B. 1,2,3) soll "only two numbers allowed" ausgegeben werden. --rausgenommen weil kein Gebrauch!
# Bei der Eingabe von Float-Werten z.B. 3.5 soll "only integers allowed" ausgegeben werden.
# Bei der Eingabe von Buchstaben z.B. 1, z soll "only integers allowed" ausgegeben werden.
# Bei der Eingabe von 2 Zahlen als Strings separiert durch "\n" (z.B. "1\n2,3") soll 6 ausgegeben werden
# Bei der Eingabe von negativen Zahlen (z.B. -3) soll "negatives not allowed" ausgegeben werden
# 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).
importunittest
fromabcimportABC,abstractmethod
classIStringCalculator(ABC):
@abstractmethod
defadd(self,numbers:str)->int:
pass
classStringCalculator(IStringCalculator):
defadd(self,numbers:str)->int:
'''Leere Eingabe soll 0 ausgeben'''
ifnumbers=="":
return0
ifnumbers.startswith("//"):
delimiter=numbers[2:3]
numbers=numbers[4:]
list=numbers.split(delimiter)
else:
'''Zahlen werden aufgeteilt'''
list=numbers.replace("\n",",").split(",")
result=0
fornuminlist:
num=num.strip()
ifnum=="":
continue
'''Sicherstellen dass Floats nicht berücksichtigt werden'''
if"."innum:
return"only integers allowed"
'''Sicherstellen, dass keine Buchstaben verwendet werden dürfen'''