中文数字转换成阿拉伯数字python,罗马数字转换为阿拉伯数字
主题1:罗马数字转换
罗马数字包含以下七个字符:I、V、X、L、C、D和m。
字符数值
我1
第五版
X 10
L 50
C 100
D 500
M 1000
比如罗马数字2写成II,就是把两个并排放置的1,12写成XII,也就是X II,27写成XXVII,也就是XX V II。
在罗马数字中,小数字在大数字的右边。4但是不要写IIII,要写IV。数字1在数字5的左边,所表示的数字等于通过减少大数的个数而得到的数字4。类似地,数字9表示为IX。这条规则只适用于以下六种情况:
我可以放在V (5)和X (10)的左边代表4和9。
x可以放在L (50)和C (100)的左边,代表40和90。
c可以放在D (500)和M (1000)的左边,分别代表400和900。
给定一个罗马数字,将其转换为整数。确保输入在1到3999的范围内。
示例:
示例1:
输入:“III”
输出:3
示例2:
输入:“IV”
输出:4
示例3:
输入:“IX”
产出:9
示例4:
输入:“LVIII”
产量:58
解释:C=100,L=50,XXX=30,III=3。
示例5:
输入:“MCMXCIV”
产量:1994年
解释:M=1000,CM=900,XC=90,IV=4。
编程思路:
一般来说,罗马数字的小数在大数之后,每个数字都可以翻译成相应的十进制,加在一起。
如果小数在大数前面,可以加上对应小数的相反数。
#示例:
IV=-1 5=4
CM=-100 1000=900:
MCMXCIV=1000-100 1000-10 100-1 5=1994
代码:
罗马数字到十进制数字的函数:
Roman _ into _ decimal(Roman _ num):# #罗马数字到十进制数字的函数
对于罗马数字中的I:
如果我不是罗马人:
打印(“请输入正确的罗马数字”)
返回
遍历输入字符串以确定它是否是正确的罗马数字;如果没有,则提示并返回None。
数量=0
reduce=[Roman _ num[I]for I in range(len(Roman _ num)-1)if Roman[Roman _ num[I]]Roman[Roman _ num[I 1]]]
逆序判断组合,将第一个字母逆序存储在列表reduce中。
对于罗马数字中的I:
num=(-Roman[reduce . pop(reduce . index(I))])if I in reduce else Roman[I]
遍历输入字符串,如果reduce包含相应的键值,则将其弹出reduce(已删除重复项)并减去相应的value值。
如果1=数字=3999:
打印(对应于十进制数:,num) # #输出对应于十进制数
否则:
打印(“超出范围,请输入一个转换值在1-3999之间的数字”)
主程序:
Roman=dict (I=1,V=5,X=10,L=50,C=100,D=500,M=1000) # #定义基本的罗马数字
虽然正确:
Roman _ in=input(请输入转换值在1到3999之间的罗马数字:)
Roman_into_decimal(roman_in) ##调用函数
测试结果:
主题2:公共前缀
写一个函数来寻找字符串数组中最长的公共前缀。
如果最长的公共前缀不存在,则返回空字符串“”。
注意:所有输入只包含小写字母A-Z。
示例1:
输入:["花","流","飞行"]
输出:“fl”
示例2:
输入:["狗","赛车","汽车"]
输出: ""
解释:输入中不存在最长的公共前缀。
代码:
找到一个常见的前缀函数:
Def _ public _ pro (string): # #求公共前缀函数
Public _ pro= # #定义一个空字符串来接收公共字符。
for I in range(min([len(I)for I in string]): # #最长的循环数是最短的字符串长度。
对于范围内的j(len(string)-1):
if string[j][i]!=string[j 1][i]:
返回public_pro
# #当从第一个字母开始相同位置的所有字符串都有不相等的字符时,返回public_pro。
否则:
public _ pro=public _ pro string[0][I]
# #当从第一个字母开始所有字符串相同位置的字符相等时,将该字符放入public_pro。
否则:
返回public_pro
# #表示循环完成,表示最短的字符串是公共前缀,返回公共前缀。
主程序:
While True: ##无限循环
尝试:
String _ in=input(请输入字符串数组(仅小写字母):\ n例如:[flower , flow , flight])。替换(, )。strip ([)。条带(])。替换
# #删除无用字符,如[]等。以规定格式输入时从字符串中提取。
if not string_in.replace( , )。islower():
Print(请输入正确的字符串数组(仅小写字母))
继续
# #如果字符串不是纯小写,则提示并刷新
string _ in=string _ in . split()# #列出由空格分隔的字符串
print(find _ public _ pro(string _ in))
例外情况为e:
打印(“程序异常”)
# #程序异常提示,捕捉除与程序退出相关的异常之外的所有异常。
最后:
If bool(输入(回车继续):
及格
# #无论是否异常,通过键盘暂停,防止页面刷新以便观察结果。
测试结果:
在python3中,默认的汉字属于字母类,但一/一类字符属于数字。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。