【发布时间】:2021-12-15 15:32:06
【问题描述】:
一目了然,代码运行良好。但是当我输入任何数字 > 3999 时,代码以消息“无效数字。再试一次!”结尾。并且输入不重复,因为它是无效的。输入应该一次又一次地返回,直到输入的数字有效(在 1 到 3999 之间)。
这是我的代码:
def int_to_roman(num):
val = [
1000, 900, 500, 400,
100, 90, 50, 40,
10, 9, 5, 4,
1
]
syb = [
"M", "CM", "D", "CD",
"C", "XC", "L", "XL",
"X", "IX", "V", "IV",
"I"
]
roman_num = ''
i = 0
while num > 0:
for _ in range(num // val[i]):
roman_num += syb[i]
num -= val[i]
i += 1
return roman_num
def roman_to_int(numeral):
rom_val = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
int_val = 0
for i in range(len(numeral)):
if i > 0 and rom_val[numeral[i]] > rom_val[numeral[i - 1]]:
int_val += rom_val[numeral[i]] - 2 * rom_val[numeral[i - 1]]
else:
int_val += rom_val[numeral[i]]
return int_val
while True:
try:
message = int(input("Enter your integer number: "))
except ValueError:
print("Invalid input. Try again!")
continue
else:
break
if message == 0:
print ("Invalid integer number. Try Again!")
elif message <= 3999:
print ('Integer to Roman: ',int_to_roman (message))
else:
print("Invalid number. Try again!")
【问题讨论】:
标签: python python-3.x integer