罗马数字转换器(用罗马数字构造单位的值取模实现)
刷CSDN无意间看到大佬用C实现的“罗马数字转换器(FreeCodeCamp)”,不懂C,读不透代码,文中有一句“向下取整”,我决定用取模和取整重写昨天的练习“罗马数字转换器|罗马数字生成器”。(我的相关博文“练习:罗马数字转整数”)
代码运行效果
输入整数排错效果
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`不同
- 学习编程的正确方法
来源:老齐教室