From 2e5682d6df3e89aaa16be9be631f75d29352c021 Mon Sep 17 00:00:00 2001 From: rudra Date: Mon, 3 Aug 2026 23:57:28 +0530 Subject: [PATCH] fix(Converting_Roman_to_Integer): handle missing args, case sensitivity, and input validation --- .../Converting_Roman_to_Integer.py | 69 +++++++++++-------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/Converting_Roman_to_Integer/Converting_Roman_to_Integer.py b/Converting_Roman_to_Integer/Converting_Roman_to_Integer.py index 5ad1ef3b..29d73e6f 100644 --- a/Converting_Roman_to_Integer/Converting_Roman_to_Integer.py +++ b/Converting_Roman_to_Integer/Converting_Roman_to_Integer.py @@ -1,28 +1,41 @@ -import sys - - -romanStr = sys.argv[1] -romanStr = str(romanStr) -dict = { - 'I':1, - 'V':5, - 'X':10, - 'L':50, - 'C':100, - 'D':500, - 'M':1000 -} - -num = 0 - -romanStr = romanStr.replace("IV","IIII") -romanStr = romanStr.replace("IX","VIIII") -romanStr = romanStr.replace("XL","XXXX") -romanStr = romanStr.replace("XC","LXXXX") -romanStr = romanStr.replace("CD","CCCC") -romanStr = romanStr.replace("CM","DCCCC") -myStr = list(romanStr) -for char in myStr: - num = num + dict[char] - -print(num) \ No newline at end of file +import sys + +if len(sys.argv) > 1: + romanStr = sys.argv[1] +else: + romanStr = input("Enter a Roman numeral: ") + +romanStr = str(romanStr).strip().upper() + +if not romanStr: + print("Error: No Roman numeral provided.") + sys.exit(1) + +ROMAN_VALUES = { + 'I': 1, + 'V': 5, + 'X': 10, + 'L': 50, + 'C': 100, + 'D': 500, + 'M': 1000 +} + +invalid_chars = [char for char in romanStr if char not in ROMAN_VALUES] +if invalid_chars: + print(f"Error: Invalid Roman numeral character(s) '{''.join(set(invalid_chars))}'.") + sys.exit(1) + +num = 0 + +romanStr = romanStr.replace("IV", "IIII") +romanStr = romanStr.replace("IX", "VIIII") +romanStr = romanStr.replace("XL", "XXXX") +romanStr = romanStr.replace("XC", "LXXXX") +romanStr = romanStr.replace("CD", "CCCC") +romanStr = romanStr.replace("CM", "DCCCC") + +for char in romanStr: + num += ROMAN_VALUES[char] + +print(num) \ No newline at end of file