• Roman numerals


    Roman numerals

    罗马数字的题目, 注意几个关键的数字即可: (100, 400, 500, 900) -> ('C', 'CD', 'D', 'CM'); (10, 40, 50, 90)->('X', 'XL', 'L', 'XC')

     1 def checkio(data):
     2     rel = ''
     3 
     4     thonsand = data / 1000
     5     rel += thonsand * 'M'
     6 
     7     data %= 1000
     8 
     9     table = [['C', 'CD', 'D', 'CM'], ['X', 'XL', 'L', 'XC']]
    10     
    11     pos = 100
    12 
    13     for i in range(0, 2):
    14         bit = data / pos
    15         if bit > 0:
    16             if bit < 4:
    17                  rel += bit * table[i][0]
    18             elif bit == 4:
    19                 rel += table[i][1]
    20             elif bit == 5:
    21                 rel += table[i][2]
    22             elif bit == 9:
    23                 rel += table[i][3]
    24             else:
    25                 rel += (table[i][2] + table[i][0] * (bit - 5))
    26 
    27         data %= pos
    28         pos /= 10
    29 
    30     if data > 0:
    31          unit = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X']
    32          rel += unit[data - 1]
    33 
    34     #replace this for solution
    35     return rel

    另外还需注意没有个位数的情况, 即第30行所示

    观摩JulianNicholls的代码

     1 elements = { 1000 : 'M', 900 : 'CM', 500 : 'D', 400 : 'CD', 
     2              100 : 'C', 90 : 'XC', 50 : 'L', 40: 'XL', 
     3              10 : 'X', 9 : 'IX', 5 : 'V', 4: 'IV', 1 : 'I' }
     4               
     5 def checkio(data):
     6     roman = ''
     7      
     8     for n in sorted(elements.keys(), reverse=True):
     9         while data >= n:
    10             roman += elements[n]
    11             data -= n
    12  
    13     return roman

      sorted(elements.keys(), reverse=True), 按key从大到小排列; 思路不错, 比数位对应的值大, 即加上该数位对应的字母, 并减去对应的数值, 直到data为0

  • 相关阅读:
    PEP8 Python 编码规范整理
    github操作
    重零开始,写一个股票交易项目(1)
    矢量地图质量检查现状与需求(2篇)
    导航数据质量评价相关
    测绘数据国内外现状概述
    机器的反叛-机器的智能会超越人类吗?
    标签要素调用CSS样式优先级说明
    内存碎片概念及主要避免方式
    关于年终述职总结
  • 原文地址:https://www.cnblogs.com/hzhesi/p/3891669.html
Copyright © 2020-2023  润新知