turner-townsend-backend-ass.../roman/roman.py

37 lines
1020 B
Python

import readline
def convert_to_number(numerals: str) -> str:
filtered = list(filter(lambda x: x in "IVXCM", list(numerals.upper())))
if len(filtered) == 0:
return "ERROR: Invalid input"
values: list[int] = []
for i in range(len(filtered)):
match filtered[i]:
case "I":
values.append(1)
case "V":
values.append(5)
case "X":
values.append(10)
case "C":
values.append(100)
case "M":
values.append(1000)
if len(values) > 1:
return f"{''.join(filtered)} = {' + '.join(str(v) for v in values)} = {sum(values)}"
else:
return f"{''.join(filtered)} = {values[0]}"
def main():
while True:
try:
numerals = input("Please enter some Roman numerals: ")
print(convert_to_number(numerals))
except (EOFError, KeyboardInterrupt):
break
if __name__ == "__main__":
main()