python - 检查将罗马数字转换为整数的特定情况
问题描述
我必须创建一个带有 1 个参数的函数,该函数接受一个字符串并将其转换为假定的整数。例如:输入-'IV',输出- 4。如果有人可以提供帮助,将不胜感激。另外,我将把代码供参考。
def FromRoman(string):
count = 0
for i in string:
if i == 'I':
count += 1
elif i == "V":
count += 5
elif i == 'X':
count += 10
elif i == "L":
count += 50
elif i == 'C':
count += 100
elif i == 'D':
count += 500
elif i == 'M':
count += 1000
return count
解决方案
假设罗马数字不仅仅是您正在做的单个字母检查(例如 LXIX 之类的东西),这就是我的做法。
我们将遍历罗马数字,并且对于每个“数字”:
- 如果数字的值小于我们数字中下一个数字的值(“IV”,I 的值小于 V 的值),我们将从答案中减去低位数字的值
- 否则,我们只需添加数字的值。
这是我在代码中所说的:
def romanToInt(roman):
valueMap = {'M': 1000,'D': 500 ,'C': 100,'L': 50,'X': 10,'V': 5,'I': 1}
ans = 0
for i in range(len(roman) - 1):
if valueMap[roman[i]] < valueMap[roman[i+1]]:
ans -= valueMap[roman[i]]
else:
ans += valueMap[roman[i]]
return ans + valueMap[roman[-1]]
推荐阅读
- javascript - 如何根据某个变量更新组件的样式?
- excel - VBA:使用对象变量循环字典中的项目
- haskell - 在 Haskell Stack 中使用本地包
- reactjs - 是否可以在本机反应中动态加载选项卡?
- c++ - 向量元素大小
- javascript - 反正有没有使用javascript(仅限node.js)(discord bot)截屏?
- wordpress - 有没有办法自动向所有 WordPress Post URLS 添加查询参数?
- sql - 如何在 Laravel eloquent 中使用 group by 获取最后一行
- javascript - 从路由器调用时,module.exports 返回 undefined
- alexa-skills-kit - 用于创建 Alexa 智能家居技能的基于 TypeScript 的模板