【发布时间】:2020-05-11 02:11:33
【问题描述】:
我正在尝试使用 for 循环将整数转换为罗马数字。我启动了代码,但我目前被困在这里,我不知道该怎么办(一直出错)。如果有人对如何继续此代码有任何想法,我们将不胜感激。
roman_digits = {1000: "M", 900: "CM", 500: "D", 400: "CD", 100: "C", 90: "XC", 50: "L", 40: "XL", 10: "X", 9: "IX", 5: 'V', 4: "IV", 1: "I"}
empty = ""
rand_num = 153
for nums, alpha in roman_digits.items():
if rand_num <= nums:
empty += alpha
rand_num -= nums
print(empty)
此代码无效
【问题讨论】:
-
我在任何地方都看不到您会在此代码中获得显式异常。尽管从逻辑上讲,
153小于1000,尽管罗马数字表示为 CLIII,但没有您的代码将插入的M -
dict不是 Python 中的有序集合。你确定这个算法正在按照你期望的顺序进行吗? -
是的,在用户输入不超过 1000 之前它应该可以正常工作
-
@Two-BitAlchemist,因为 python 3.7 dict 是按插入顺序排序的。
-
当我在代码中添加“rand_num -= nums”时,我得到了荒谬的结果
标签: python python-3.x dictionary integer roman-numerals