admin管理员组

文章数量:1585963


  • 我的CSDN主页
  • My Python 学习个人备忘录
  • 我的HOT

罗马数字转换器(用罗马数字构造单位的值取模实现)


  刷CSDN无意间看到大佬用C实现的“罗马数字转换器(FreeCodeCamp)”,不懂C,读不透代码,文中有一句“向下取整”,我决定用取模和取整重写昨天的练习“罗马数字转换器|罗马数字生成器”。(我的相关博文“练习:罗马数字转整数”)


  1. 代码运行效果
  2. 完整代码

代码运行效果


输入整数排错效果


回首页

python完整代码
(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)
# coding: utf-8


def int_to_Roman(integer):
    '''整数(1~3999)转罗马数字'''
    units = {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'} #罗马数字构造元素字典。
    model = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]#罗马数字单位
    Roman = [] #初始化罗马数字字符列表。
    for value in model:
        if integer%value < integer:
            if units.get(value) in ('M', 'C', 'X', 'I'):
                Roman.append(units.get(value)*int(integer/value))
            else:
                Roman.append(units.get(value))
        integer = integer % value #
    return ''.join(Roman) #返回罗马数字字符列表拼接字符串。


print(f'\n\n\n{"整数(1~3999)转罗马数字":_^35}\n')
while True:
    try:
        integer = int(input(f'\n\n{" ":4}输入整数:'))
        if integer < 1 or integer > 3999:
            print(f'\n\n\n{"请输入1~3999的整数!":.^35}\n\n\n')
        else:
            break
    except Exception as error:
        print(f'\n\n\n{error}\n{"输入错误!请重试。":.^33}\n\n')
print(f'\n\n\n{" ":4}整数{integer}转罗马数字是:\
{int_to_Roman(integer)}\n\n\n{"The End":_^42}\n')

回首页

我的HOT博:

  • 斐波那契数列(递归实现和for实现)(当前阅读1665)
  • 排序数组中查找元素的重复起止位置(当前阅读1200)
  • 柱状图中最大矩形(当前阅读1606)
  • 电话拨号键盘的字母组合(当前阅读1219)
  • 密码强度检测器(当前阅读1670)
  • 求列表平衡点(当前阅读1703)
  • 字符串统计(当前阅读1904)
  • 尼姆游戏(代码优化版)(当前阅读823)
  • Hot尼姆游戏(聪明版首发)(当前阅读3242)
推荐条件 点阅破千

相关文章:

  • 练习:罗马数字转整数
  • 罗马数字转换器|罗马数字生成器
  • 罗马数字转换器(用罗马数字构造元素的值取模实现)

上一篇: 罗马数字转换器|罗马数字生成器
下一篇:


回首页

精品文章:

  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告

本文标签: 罗马数字转换器元素值取模