|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求助代码- """罗马数字转十进制"""
- #罗马数字有I、V、X、L、C、D、M七种字符,分别表示数值1,5,10,50,100,500,10000
- R2N = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
- #罗马字符转数字
- def roman_num(x):
- r = 0
- n = len(x)
- for i, ch in enumerate(x):
- v = rc[ch]
- if i < n-1 and v < R2N[x[i+1]]:
- r += R2N[x[i]]
- else:
- r += R2N[x[i+1]]
- r -= R2N[x[i]]
-
- return r;
-
-
- #程序主体
- x = input("请输入一个罗马字符:")
- v = roman_num(x)
- print(f"转换后的结果是:{v}")
复制代码 主要是中间循环体和判断中不好描述
问题出在循环体和判断条件上。在循环体中,你需要根据当前字符和下一个字符的大小关系来决定加还是减。在判断条件中,你需要判断当前字符是否是最后一个字符,以避免越界访问。
以下是修正后的代码:
- # 罗马字符转数字
- def roman_num(x):
- r = 0
- n = len(x)
- for i, ch in enumerate(x):
- v = R2N[ch]
- if i < n-1 and v < R2N[x[i+1]]:
- r -= v
- else:
- r += v
- return r
- # 程序主体
- x = input("请输入一个罗马字符:")
- v = roman_num(x)
- print(f"转换后的结果是:{v}")
复制代码
修正后的代码中,循环体中根据大小关系决定加还是减,判断条件中判断是否是最后一个字符来避免越界访问。这样就能正确地将罗马数字转换为十进制数了。
|
|