Files
Mysteryhelfer/EinzelfunktionenExperimentierbereich/römischeZahl/römische zahlen.py

39 lines
1.4 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf8 -*-
RZA = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000, '\u2181': 5000, '\u2182': 10000,
'\u2187': 50000, '\u2188': 100000}
AZR = [(100000, '\u2188'), (90000, '\u2182\u2188'), (50000, '\u2187'), (40000, '\u2182\u2187'),
(10000, '\u2182'), (9000, 'M\u2182'), (5000, '\u2181'), (4000, 'M\u2181'), (1000, 'M'), (900, 'CM'), (500, 'D'),
(400, 'CD'), (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'), (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')]
while True:
rz = input("Bitte römische Zahl eingeben: ")
rz = rz.rstrip()
rz = rz.upper()
try:
az = 0
for i in range(len(rz)):
if i == len(rz) - 1:
az += RZA[rz[i]]
print(rz, "=", az)
else:
if RZA[rz[i]] < RZA[rz[i + 1]]:
az -= RZA[rz[i]]
else:
az += RZA[rz[i]]
except:
try:
zahl = int(rz)
if zahl > 500000:
print("Nööö, größer als 500000 mag ich nicht")
continue
rom = ""
for az, romz in AZR:
count = zahl // az
zahl -= az * count
rom += romz * count
print(rz, "=", rom)
except:
print("Es konnte keine römische oder arabische Zahl erkannt werden")