diff --git a/String calculator b/String calculator index 301f5911de519e7b0b35e51e72e8439f8cf17616..fd9052ff6ff49cc96749ca7d759e2cc5d03840d4 100644 --- a/String calculator +++ b/String calculator @@ -13,29 +13,42 @@ # eine negative zahl # mehrere negative zahlen +# Delimiters: +# add numbers seperated by a custom delimiter +# Test with - Numbers + import unittest +import re class StringCalculator: + def __init__(self): + self.called_count = 0 def add (self, numbers : str)-> int: #Erwartet Integer if not numbers: return 0 - else: - numbers = numbers.replace('\n',',') - number_list = numbers.split(',')#aufteilung der strings - negative=[] #array für die negativen nummern - total_sum = 0 - for number_str in number_list: #jedes element in der liste wird durch genommen - if number_str: - number = int(number_str)# summierung der integer - if number <0: - negative.append(number) - total_sum += number + + if numbers.startswith("//"): + 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",",") + + number_list = numbers.split(',')#aufteilung der strings + negative = [] #array für die negativen nummern + #total_sum = 0 + for number_str in number_list: #jedes element in der liste wird durch genommen + #if number_str: + number = int(number_str)# summierung der integer + if number <0: + negative.append(number) + #total_sum += number - if negative: - print(f"Negative Zahlen:{negative} ")#ausgabe negative zahlen - raise ValueError(f"negatives not allowed: {','.join(map(str, negative))}") + if negative: + print(f"Negative Zahlen:{negative} ")#ausgabe negative zahlen + raise ValueError(f"negatives not allowed: {','.join(map(str, negative))}") - return total_sum + return sum(map(int,number_list)) class TestStingCalculator(unittest.TestCase): @@ -68,9 +81,17 @@ class TestStingCalculator(unittest.TestCase): with self.assertRaises(ValueError) as e: self.calculator.add("-1,-3,4") self.assertEqual(str(e.exception),"negatives not allowed: -1,-3") + with self.assertRaises(ValueError) as e: self.calculator.add("-1\n-3,4") self.assertEqual(str(e.exception),"negatives not allowed: -1,-3") + def test_add_numbers_with_custom_delimiter(self): + self.assertEqual(self.calculator.add("//;\n1;2;3"),6) + self.assertEqual(self.calculator.add("//;\n1,2,3"),6) + with self.assertRaises(ValueError) as e: + self.calculator.add("//;\n-3,4") + self.assertEqual(str(e.exception),"negatives not allowed: -3") + if __name__=='__main__':