Skip to content
Snippets Groups Projects
Commit 67eafd01 authored by Muhamed's avatar Muhamed
Browse files

Feature 5 Delimiter

parent 4c99a46a
No related branches found
No related tags found
No related merge requests found
...@@ -13,29 +13,42 @@ ...@@ -13,29 +13,42 @@
# eine negative zahl # eine negative zahl
# mehrere negative zahlen # mehrere negative zahlen
# Delimiters:
# add numbers seperated by a custom delimiter
# Test with - Numbers
import unittest import unittest
import re
class StringCalculator: class StringCalculator:
def __init__(self):
self.called_count = 0
def add (self, numbers : str)-> int: #Erwartet Integer def add (self, numbers : str)-> int: #Erwartet Integer
if not numbers: if not numbers:
return 0 return 0
else:
numbers = numbers.replace('\n',',') 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 number_list = numbers.split(',')#aufteilung der strings
negative = [] #array für die negativen nummern negative = [] #array für die negativen nummern
total_sum = 0 #total_sum = 0
for number_str in number_list: #jedes element in der liste wird durch genommen for number_str in number_list: #jedes element in der liste wird durch genommen
if number_str: #if number_str:
number = int(number_str)# summierung der integer number = int(number_str)# summierung der integer
if number <0: if number <0:
negative.append(number) negative.append(number)
total_sum += number #total_sum += number
if negative: if negative:
print(f"Negative Zahlen:{negative} ")#ausgabe negative zahlen print(f"Negative Zahlen:{negative} ")#ausgabe negative zahlen
raise ValueError(f"negatives not allowed: {','.join(map(str, negative))}") raise ValueError(f"negatives not allowed: {','.join(map(str, negative))}")
return total_sum return sum(map(int,number_list))
class TestStingCalculator(unittest.TestCase): class TestStingCalculator(unittest.TestCase):
...@@ -68,9 +81,17 @@ class TestStingCalculator(unittest.TestCase): ...@@ -68,9 +81,17 @@ class TestStingCalculator(unittest.TestCase):
with self.assertRaises(ValueError) as e: with self.assertRaises(ValueError) as e:
self.calculator.add("-1,-3,4") self.calculator.add("-1,-3,4")
self.assertEqual(str(e.exception),"negatives not allowed: -1,-3") self.assertEqual(str(e.exception),"negatives not allowed: -1,-3")
with self.assertRaises(ValueError) as e: with self.assertRaises(ValueError) as e:
self.calculator.add("-1\n-3,4") self.calculator.add("-1\n-3,4")
self.assertEqual(str(e.exception),"negatives not allowed: -1,-3") 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__': if __name__=='__main__':
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment