Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
PraxisprojektTechnologiebasierteInnovation
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Lasse Pikkemaat
PraxisprojektTechnologiebasierteInnovation
Merge requests
!4
Danis Code + Tests
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Danis Code + Tests
Danis
into
develop
Overview
0
Commits
1
Pipelines
0
Changes
4
Merged
Lasse Pikkemaat
requested to merge
Danis
into
develop
2 months ago
Overview
0
Commits
1
Pipelines
0
Changes
4
Expand
0
0
Merge request reports
Viewing commit
f9770699
Show latest version
4 files
+
212
−
8
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
4
Search (e.g. *.vue) (Ctrl+P)
f9770699
Danis Code + Tests
· f9770699
linopino
authored
2 months ago
others/Dani/DaniRomanConverter.py
0 → 100644
+
183
−
0
Options
# Bei Eingabe der Zahl 1 soll "I" ausgegeben werden
# Bei Eingabe der Zahl 2 soll "II" ausgegeben werden
# Bei Eingabe der Zahl 3 soll "III" ausgegeben werden
# Bei Eingabe der Zahl 4 soll "IV" ausgegeben werden
# Bei Eingabe der Zahl 5 soll "V" ausgegeben werden
# Bei Eingabe der Zahl 9 soll "IX" ausgegeben werden
# Bei Eingabe der Zahl 10 soll "X" ausgegeben werden
# Bei Eingabe der Zahl 21 soll "XXI" ausgegeben werden
# Bei Eingabe der Zahl 50 soll "L" ausgegeben werden
# Bei Eingabe der Zahl 100 soll "C" ausgegeben werden
# Bei Eingabe der Zahl 500 soll "D" ausgegeben werden
# Bei Eingabe der Zahl 1000 soll "M" ausgegeben werden
# Bei Eingabe der Zahl 1111 soll "MCXI" ausgegeben werden
# Bei Eingabe der Zahl 99 soll "XCIX" ausgegeben werden
# Bei Eingabe der Zahl 0 soll "Es gibt keine römische Null" ausgegeben werden
# Bei Eingabe der Zahl 40 soll "XL" ausgegeben werden
# Bei Eingabe eines Strings soll "Bitte ganze Zahlen eingeben" ausgegeben werden -> geändert aufgrund der Aufgabenstellung
# Bei Eingabe von Float-Werten (z.B. 4,3) soll "Bitte ganze Zahlen eingeben" ausgegeben werden.
# Bei Eingabe von negativen Werten (z.B. -5) soll "Es sind nur positive Zahlen zum konvertieren erlaubt" ausgegeben werden
# Bei Eingabe der Zahl 2025 soll "MMXXV" ausgegeben werden
# Bei Eingabe von Zeichen wie ! soll "Bitte ganze Zahlen eingeben" ausgegeben werden
# Bei Eingabe mehrerer Zahlen wie 4, 3 soll "Bitte nur eine ganze Zahl eingeben" augegeben werden
# Bei Eingabe größerer Zahlen wie z.B. 4000 soll "MMMM" ausgegeben werden
# Bei Eingabe der Zahl 30 soll "XXX" ausgegeben werden
# Bei Eingabe der Zahl 90 soll "90" ausgegeben werden
# Bei Eingabe eines leeren Strings soll "Bitte ganze Zahlen eingeben" ausgegeben werden
from
abc
import
ABC
,
abstractmethod
import
unittest
from
src.romannumerals
import
RomanNumber
from
src.interfaces
import
IRomanNumber
'''
class IConverter(ABC):
@abstractmethod
def convert(self, num: int) -> str:
pass
class Converter(IConverter):
def convert(self, num: int) -> str:
if isinstance(num, str) and len(num.split(
'
,
'
)) > 1:
return
'
Bitte nur eine ganze Zahl eingeben
'
roman_numbers = [(1000,
'
M
'
), (500,
'
D
'
), (100,
'
C
'
), (90,
'
XC
'
), (50,
'
L
'
), (40,
'
XL
'
), (10,
'
X
'
), (9,
'
IX
'
), (5,
'
V
'
), (4,
'
IV
'
), (1,
'
I
'
)]
roman_str =
''
if num == 0:
return
"
Es gibt keine römische Null
"
if isinstance(num, int):
if num < 0:
return
"
Es sind nur positive Zahlen zum konvertieren erlaubt
"
for value, numeral in roman_numbers:
while num >= value:
roman_str += numeral
num -= value
return roman_str
else:
return
"
Bitte ganze Zahlen eingeben
"
'''
class
TestConverter
(
unittest
.
TestCase
):
def
setUp
(
self
):
self
.
converter
:
IRomanNumber
=
RomanNumber
()
def
test_convertOne
(
self
):
res
=
self
.
converter
.
convert
(
1
)
self
.
assertEqual
(
res
,
'
I
'
)
def
test_convertTwo
(
self
):
res
=
self
.
converter
.
convert
(
2
)
self
.
assertEqual
(
res
,
'
II
'
)
def
test_convertThree
(
self
):
res
=
self
.
converter
.
convert
(
3
)
self
.
assertEqual
(
res
,
'
III
'
)
def
test_convertFour
(
self
):
res
=
self
.
converter
.
convert
(
4
)
self
.
assertEqual
(
res
,
'
IV
'
)
def
test_convertFive
(
self
):
res
=
self
.
converter
.
convert
(
5
)
self
.
assertEqual
(
res
,
'
V
'
)
def
test_convertNine
(
self
):
res
=
self
.
converter
.
convert
(
9
)
self
.
assertEqual
(
res
,
'
IX
'
)
def
test_convertTen
(
self
):
res
=
self
.
converter
.
convert
(
10
)
self
.
assertEqual
(
res
,
'
X
'
)
def
test_convertTwentyTwo
(
self
):
res
=
self
.
converter
.
convert
(
21
)
self
.
assertEqual
(
res
,
'
XXI
'
)
def
test_convertFifty
(
self
):
res
=
self
.
converter
.
convert
(
50
)
self
.
assertEqual
(
res
,
'
L
'
)
def
test_convertHundred
(
self
):
res
=
self
.
converter
.
convert
(
100
)
self
.
assertEqual
(
res
,
'
C
'
)
def
test_convertFiveHundred
(
self
):
res
=
self
.
converter
.
convert
(
500
)
self
.
assertEqual
(
res
,
'
D
'
)
def
test_convertThousand
(
self
):
res
=
self
.
converter
.
convert
(
1000
)
self
.
assertEqual
(
res
,
'
M
'
)
def
test_convertFourDigit
(
self
):
res
=
self
.
converter
.
convert
(
1111
)
self
.
assertEqual
(
res
,
'
MCXI
'
)
def
test_convertNintyNine
(
self
):
res
=
self
.
converter
.
convert
(
99
)
self
.
assertEqual
(
res
,
'
XCIX
'
)
def
test_convertZero
(
self
):
res
=
self
.
converter
.
convert
(
0
)
self
.
assertEqual
(
res
,
'
Es gibt keine römische Null
'
)
def
test_convertFourty
(
self
):
res
=
self
.
converter
.
convert
(
40
)
self
.
assertEqual
(
res
,
'
XL
'
)
def
test_convertString
(
self
):
res
=
self
.
converter
.
convert
(
'
HUIHIN
'
)
self
.
assertEqual
(
res
,
"
Bitte ganze Zahlen eingeben
"
)
def
test_convertFloat
(
self
):
res
=
self
.
converter
.
convert
(
4.3
)
self
.
assertEqual
(
res
,
"
Bitte ganze Zahlen eingeben
"
)
def
test_convertNegative
(
self
):
res
=
self
.
converter
.
convert
(
-
4
)
self
.
assertEqual
(
res
,
"
Es sind nur positive Zahlen zum konvertieren erlaubt
"
)
def
test_convertYear
(
self
):
res
=
self
.
converter
.
convert
(
2025
)
self
.
assertEqual
(
res
,
"
MMXXV
"
)
def
test_convertSign
(
self
):
res
=
self
.
converter
.
convert
(
'
!
'
)
self
.
assertEqual
(
res
,
"
Bitte ganze Zahlen eingeben
"
)
def
test_convertMultipleNum
(
self
):
res
=
self
.
converter
.
convert
(
'
4, 3
'
)
self
.
assertEqual
(
res
,
"
Bitte nur eine ganze Zahl eingeben
"
)
def
test_convertHighNum
(
self
):
res
=
self
.
converter
.
convert
(
4000
)
self
.
assertEqual
(
res
,
"
MMMM
"
)
def
test_convertThirty
(
self
):
res
=
self
.
converter
.
convert
(
30
)
self
.
assertEqual
(
res
,
"
XXX
"
)
def
test_convertNinety
(
self
):
res
=
self
.
converter
.
convert
(
90
)
self
.
assertEqual
(
res
,
"
XC
"
)
def
test_convertEmpty
(
self
):
res
=
self
.
converter
.
convert
(
''
)
self
.
assertEqual
(
res
,
"
Bitte ganze Zahlen eingeben
"
)
if
__name__
==
"
__main__
"
:
unittest
.
main
()
# python -m unittest others.Dani.DaniRomanConverter -v
\ No newline at end of file
Loading