Python | 罗马数字转整数

问题描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符          数值I             1V             5X             10L             50C             100D             500M             1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。27 写做  XXVII, 即为 XX + V + II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内解决方案建立一个字典key为罗马字符,value为对应的数值,ans则为数值之和。遍历a,若第i个元素对应的值比第i-1个元素的值大,则ans减去i-1对应的值;其他情况ans则加上i-1对应的值。遍历a时是从第二个元素开始的,因为第一个元素前没有其他元素;遍历时进行运算的值都是第i-1个元素所对应的值,而最终遍历到的是第i个元素,所以最后在输出时要加上最后一个元素所对应的数值。a = input("输入一个罗马数字:")ans = 0dict1 = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}for i in range(1, len(a)):if dict1[a[i]] > dict1[a[i - 1]]:ans -= dict1[a[i - 1]]else:ans += dict1[a[i - 1]]print(ans + dict1[a[-1]])结语这道题的解题在于对字典熟练运用,以及对于题目的充分理解。实习编辑:李欣容作者: 涂瀚鑫、沈志坚、陈东

(0)

相关推荐

  • python中的内置函数

    前言 本人只在csdn写博客 内置函数 介绍 一. 数学运算 abs()求绝对值函数 round() 近似取值 pow()求指数 divmod()求商和余数 max()求最大值和min()求最小值 s ...

  • Python基础知识汇总(避坑)

    (1)字符串(全部返回的都是新的字符串,字符串属于有序不可变序列) s.replace(old,new,[max]) s.strip('a'):从字符串前后剔除字符串'a' s.lstrip('a') ...

  • 数据类型

    一.变量 变量从字面意思可以理解成:是变化的量. 1.1 定义变量 name = "hello world" #定义一个字符变量,name 是变量名 "hello wor ...

  • LeetCode面试系列 第7天:No.13 - 罗马数字转整数

    上一篇 LeetCode 面试题中,我们分析了一道轻松的字符串面试题 - 回文数.今天我们来分析一道将数学和字符串结合起来的的面试题. Leetcode 今天要给大家分析的面试题是 LeetCode ...

  • ​LeetCode刷题实战13: 罗马数字转整数

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战12: 整数转罗马数字

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • Python反转三位整数有几种方法?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • Python|十进制整数的反码

    问题描述给每个非负整数 N 都有其二进制表示.例如,5 可以被表示为二进制 "101",11 可以用二进制 "1011" 表示,依此类推.注意,除 N = 0 ...

  • Python|二叉树叶子结点问题解决方法

    问题描述键盘输入一颗二叉树,求解其叶子结点个数.示例: 输入:4,2,6,1,3,5输出:3解决方案一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称"叶子".当二叉树为空时 ...

  • Python数据分析库有哪些?常见分类!

    众所周知,Python前景好.需求量大.薪资高.就业岗位多,除了基本的开发工作之外,还可以从事人工智能.数据分析.网络爬虫等岗位.那么说起数据分析,你知道Python常用数据分析库有哪些吗?我们一起来 ...

  • PyPy为什么能让Python比C还快?一文了解内在机制

    来自|机器之心 「如果想让代码运行得更快,您应该使用 PyPy.」 - Python 之父 Guido van Rossum 对于研究人员来说,迅速把想法代码化并查看其是否行得通至关重要.Python ...

  • 【Python爬虫】:使用高性能异步多进程爬虫获取豆瓣电影Top250

    在本篇博文当中,将会教会大家如何使用高性能爬虫,快速爬取并解析页面当中的信息.一般情况下,如果我们请求网页的次数太多,每次都要发出一次请求,进行串行执行的话,那么请求将会占用我们大量的时间,这样得不偿 ...