from src.interfaces import IStringCalculator import re class StringCalculator(IStringCalculator): def add(self, numbers: str) -> int: if not numbers: return 0 if numbers.startswith("//"): if "\n" not in numbers: raise ValueError("Ungültiges Format: Nicht vollständig") delimiter_end_index = numbers.index("\n") delimiter = numbers[2:delimiter_end_index] numbers = numbers[delimiter_end_index + 1:] numbers = numbers.replace(delimiter, ",") numbers = numbers.replace("\n", ",") # Split the string by commas, convert each value to an integer, and sum them up try: numbers_list = list(map(int, numbers.split(","))) except ValueError: raise ValueError("Ungültiges Zahlenformat: Enthält nicht-numerische Werte") negative_numbers = [num for num in numbers_list if num < 0] if negative_numbers: raise ValueError(f"Negative nicht erlaubt: {negative_numbers}") numbers_list = [num for num in numbers_list if num <= 1000] return sum(numbers_list)