我正在学习编码,并且我有一个练习来制作罗马数字到整数的转换器。我意识到编写这个程序有很多不同的方法,但如果您能帮助我找到我的错误,我将不胜感激。我很想听到关于如何写得更好的建议,但我现在真正可以使用的是理解我在这方面做错了什么。
我有一本字典叫roman_numerals
. Its keys
是罗马数字值,其values
是它们的匹配整数。
roman_numerals = {"M":1000,"CM":900,"D":500,"CD":400,"C":100,"XC":90,"L":50,"XL":40,"X":10,"V":5,"IV":4,"I":1}
def roman_int(user_choice):
if user_choice == "1":
user_roman = input("What numeral would you like to convert?\n").upper()
resultI = 0
for k,v in roman_numerals.items():
if user_roman == k:
resultI += roman_numerals.get(user_roman)
else:
for i in user_roman:
if i in roman_numerals.keys():
if i == k:
resultI += v
print(resultI)
当我运行我的代码时,如果我使用等于 a 的数字key
如果有多个字符(例如“IV”),我得到的结果是“IV”和“V”的相加。或“CM”和“M”。
我知道为什么会发生这种情况,因为我要求迭代。但是,我可以要求我的程序在返回值时停止迭代吗?我觉得我真的很接近解决方案,但此时我只是感到困惑。
谢谢你!
您必须确保消耗掉所有对总和有贡献的字符。由于所有多字符“原子”文字都以较低值的单位开始,否则,较高值的单位先出现,因此一种简单的贪婪方法是可行的:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)