当前位置: 首页 > news >正文

在 Python 中将整数转换为罗马数字

罗马数字使用以下七个符号书写。

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

这些符号用于表示数以千计的数字。

罗马写20,可以用两个X拼成XX。 但是 XXXX 不等于 40。

40的罗马数字是XL。

相似地:

Symbol       Value
IV             4
IX             9
XL             40
XC             90
CD             400
CM             900

本篇文章将介绍在 Python 中将整数转换为罗马数字。


在 Python 中将整数转换为罗马数字

以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。

roman_map = [(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')]def into_roman(num):res = ''while num > 0:for i, r in roman_map:while num >= i:res += rnum -= ireturn res
num = int(input("Enter a number: "))
print(into_roman(num))

输出:

Enter a number: 42
XLII

在上面的示例中,roman_map 包含一个具有相应值和符号的列表。 res 是一个空字符串。

如果 num 的值大于零,则 while num > 0 运行循环。 罗马数字中没有零符号。

roman_map 中的 for i, r 遍历每个 (integer, roman) 对,直到找到第一个数字。


在 Python 中使用除法将整数转换为罗马数字

以下示例使用除法将用户输入的整数转换为罗马数字。

roman_map = { 1: 'I', 4: 'IV', 5: 'V', 9: 'IX', 10: 'X', 40: 'XL',50: 'L', 90: 'XC', 100: 'C', 400: 'CD', 500: 'D', 900: 'CM', 1000: 'M'}
num = int(input("Enter a number: "))# 13 integers in descending order
order = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]for i in order:if num != 0:quotient= num//i# prints the roman numeral if the quotient is not zeroif quotient != 0:for j in range(quotient):print(roman_map[i], end="")# update input number with a remaindernum = num%i

输出:

Enter a number: 42
XLII

在这种方法中,我们将输入整数按降序除以 13 个基本整数。 roman_map 是一个包含 13 个整数的字典,它们的罗马数字等价于键值对。

num 存储用户输入的整数。 顺序列表按降序存储 13 个整数。

输入数字除以顺序列表中的所有数字,直到商不为零。

如果商不为零且有余数,则在 num 中更新。 循环继续运行,我们得到了等价的罗马数字。

现在你应该知道如何在 Python 中将整数转换为罗马数字。 我们希望您觉得本文对您有所帮助。

http://www.lryc.cn/news/65695.html

相关文章:

  • HashTable,Properties,TreeSet源码分析
  • 多维图像去噪方法研究
  • 托福口语考察内容和形式
  • 【地铁上的设计模式】--结构型模式:代理模式
  • Oracle 体系结构
  • java手写日历系统(亲测)
  • 35-40的技术人员为什么会被“不友好”,请你们自身反思-拒做职场的“嗯嗯”怪
  • 工地烟火AI监控识别分析系统 yolov7
  • MATLAB算法实战应用案例精讲-【人工智能】对比学习(概念篇)(补充篇)
  • 代码随想录算法训练营第三十一天 | 贪心1,想不到怎么找局部最优就做不出来
  • 【SVN】版本控制管理的文件(夹)如何重命名
  • 必须包含数字,字母组合的密码正则表达式
  • JavaScript:栈和对列
  • [数据库系统] 一、创建表以及使用主键约束(educoder)
  • 《走进对象村4》之面向对象的第一大特性——封装
  • 罗马数字转整数、整数转罗马数字----2023/5/4
  • 2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。
  • QT Android QTextEdit 复制粘贴文本后出现多余数据问题
  • 知识变现海哥:你为什么努力却不富有,大概率是你不懂这个道理
  • 【Mybatis】增删改查
  • 20230504----重返学习-vue2项目-跳转拦截-重定向并返回前一页-使用vuex调用接口-全选与全不选-总价计算
  • (异或相消)猫猫数字异或和
  • 树脂塞孔有哪些优缺点及应用?
  • 【Robot Framework】RF关键字大全
  • Xilinx Artix-7【XC7A35T-2CSG324I】【XC7A35T-1CSG324I】成本与收发器优化的FPGA器件
  • K8S之自定义Controller
  • 无线电相关的SCI期刊有哪些? - 易智编译EaseEditing
  • Rust - 结构体基本使用
  • 29. Kubernetes 核心组件讲解——Controller Manager
  • BetaFlight统一硬件配置文件研读之feature命令