【发布时间】:2019-03-04 09:56:28
【问题描述】:
我正在学习编码,并且我有一个练习来将罗马数字转换为整数。我意识到编写这个程序有很多不同的方法,但如果你能帮助我找出我的错误,我将不胜感激。我很想听听有关如何更好地编写它的建议,但我现在真正可以使用的是了解我在这方面做错了什么。
我有一本名为roman_numerals 的字典。它的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)
当我运行我的代码时,如果我使用一个等于多个字符的key 的数字(例如“IV”),我得到的结果是“IV”和“V”的加法”。或“CM”和“M”。
我知道它为什么会发生,因为我要求进行迭代。但是,我可以要求我的程序在返回值时停止迭代吗?我觉得我真的很接近解决方案,但我现在只是感到困惑。
谢谢!
【问题讨论】:
-
我相信我的回答应该可以解决您的问题
标签: python python-3.x dictionary for-loop