Roman Numeral to Integer with User Input
Question:
Roman numeral to integer converter with user input. I got this code below:
roman_numerals = {"I" : 1,
"V" : 5,
"X" : 10,
"L" : 50,
"C" : 100,
"D" : 500,
"M" : 1000
}
int_value = 0
user_input = input("Enter Roman Number: ").upper()
for i in range(len(user_input)):
if user_input[i] in roman_numerals:
if i + 1 < len(user_input) and roman_numerals[user_input[i]] < roman_numerals[user_input[i + 1]]:
int_value -= roman_numerals[user_input[i]]
else:
int_value += roman_numerals[user_input[i]]
print("The integer value is: ", int_value)
else:
print("Invalid input.")
The problem is, it prints the string "The integer value is: " the same count as the len(user_input) wherein it should only show one line of this string. For example, user inputs ‘XIX’ which is converted as ’19’ in decimal, the output goes like:
The integer value is: 10
The integer value is: 9
The integer value is: 19
I would really appreciate your feedbacks to it as I am new to python and I want to grow and improve in it.
Answers:
You have to move your print out of the loop. Like this
roman_numerals = {"I" : 1,
"V" : 5,
"X" : 10,
"L" : 50,
"C" : 100,
"D" : 500,
"M" : 1000
}
int_value = 0
user_input = input("Enter Roman Number: ").upper()
for i in range(len(user_input)):
if user_input[i] in roman_numerals:
if i + 1 < len(user_input) and roman_numerals[user_input[i]] < roman_numerals[user_input[i + 1]]:
int_value -= roman_numerals[user_input[i]]
else:
int_value += roman_numerals[user_input[i]]
else:
print("Invalid input.")
quit()
print("The integer value is: ", int_value)
Roman numeral to integer converter with user input. I got this code below:
roman_numerals = {"I" : 1,
"V" : 5,
"X" : 10,
"L" : 50,
"C" : 100,
"D" : 500,
"M" : 1000
}
int_value = 0
user_input = input("Enter Roman Number: ").upper()
for i in range(len(user_input)):
if user_input[i] in roman_numerals:
if i + 1 < len(user_input) and roman_numerals[user_input[i]] < roman_numerals[user_input[i + 1]]:
int_value -= roman_numerals[user_input[i]]
else:
int_value += roman_numerals[user_input[i]]
print("The integer value is: ", int_value)
else:
print("Invalid input.")
The problem is, it prints the string "The integer value is: " the same count as the len(user_input) wherein it should only show one line of this string. For example, user inputs ‘XIX’ which is converted as ’19’ in decimal, the output goes like:
The integer value is: 10
The integer value is: 9
The integer value is: 19
I would really appreciate your feedbacks to it as I am new to python and I want to grow and improve in it.
You have to move your print out of the loop. Like this
roman_numerals = {"I" : 1,
"V" : 5,
"X" : 10,
"L" : 50,
"C" : 100,
"D" : 500,
"M" : 1000
}
int_value = 0
user_input = input("Enter Roman Number: ").upper()
for i in range(len(user_input)):
if user_input[i] in roman_numerals:
if i + 1 < len(user_input) and roman_numerals[user_input[i]] < roman_numerals[user_input[i + 1]]:
int_value -= roman_numerals[user_input[i]]
else:
int_value += roman_numerals[user_input[i]]
else:
print("Invalid input.")
quit()
print("The integer value is: ", int_value)