【问题标题】:Integer To Roman Number [closed]整数到罗马数字[关闭]
【发布时间】:2017-03-18 13:41:03
【问题描述】:

我在网上看到了这段未完成的代码:

class py_solution:  
def int_to_Roman(self, num):  
    val = [  
        1000, 900, 500, 400,  
       ?????,
       ????,
        ?
        ]  
    syb = [  
        "M", "CM", "D", "CD",  
        "C", "XC", "L", "XL",  
        "X", "IX", "V", "IV",  
        "I"  
        ]  
    roman_num = ?
    i = ? 
    while  ???:  
        for _ in range(???):  
            roman_num += ???
            num -= ???
        i += ???  
    return ???

我很好奇如何解决它。 (我是 Python 新手,这不是我的作业

【问题讨论】:

  • @JuanMiGabarron 我看到了这篇文章,但是有没有办法用这里显示的方式来做这个代码(帖子中的代码太长而且让我感到困惑..)

标签: python python-2.7 int roman-numerals


【解决方案1】:
def int_to_Roman(num):
   val = (1000, 900,  500, 400, 100,  90, 50,  40, 10,  9,   5,  4,   1)
   syb = ('M',  'CM', 'D', 'CD','C', 'XC','L','XL','X','IX','V','IV','I')
   roman_num = ""
   for i in range(len(val)):
      count = int(num / val[i])
      roman_num += syb[i] * count
      num -= val[i] * count
   return roman_num

因此您创建了 val 和 syb,您将使用它们将 int 值映射到 roman 值。 之后,您一个一个地获取 int 值并检查其中有多少适合您的输入值,然后将该数量的罗马数字添加到结果中,然后从输入中删除添加的值并重复该过程,直到达到零。

【讨论】:

  • 有没有办法用我的问题中的模块来做到这一点?
  • 想换问号?
  • 如您所见,代码几乎相同。你的 val 是 ints,你的 syb 是 nums。你的 roman_num 是结果,你的 num 是输入。我会修复代码
  • 谢谢,修复是什么意思?
  • 是的,谢谢,但是当我尝试运行代码时,它什么也没做。我做了int_to_Roman(num)
猜你喜欢
  • 1970-01-01
  • 2023-01-17
  • 2015-05-16
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
  • 2019-01-09
  • 2011-10-25
相关资源
最近更新 更多