37 lines
1013 B
Python
37 lines
1013 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 "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()
|