先介绍python中的一种数据结构——字典。
字典(dictionary)是python中一个非常有用的内置数据类型。字典是一种映射类型(mapping type),它是一个无序的键:值对集合。 关键字必须使用不可变类型,也就是说list和包含可变类型的tuple不能做关键字。在同一个字典中关键字还必须互不相同。
>>> dic = {} #创建空字典
>>> type(dic)
<class 'dict'>
>>> tel = {'Tom':123,'Jack':234,'Rose':345}
>>> tel
{'Rose': 345, 'Jack': 234, 'Tom': 123}
>>> tel['Tom'] = 789 #修改
>>> tel
{'Rose': 345, 'Jack': 234, 'Tom': 789}
>>> tel.get('Tom') #由键得到键值
789
>>> tel['Jame'] = 567 #添加键值对
>>> tel
{'Rose': 345, 'Jame': 567, 'Jack': 234, 'Tom': 789}
#要删除一个key,用pop(key)方法,对应的value也会从dict中删除:
>>> tel.pop('Jame')
567
>>> tel
{'Rose': 345, 'Jack': 234, 'Tom': 789}
>>> tel.get('Andy') #没有这个键时,返回None
>>>
>
>>> list(tel.keys()) #返回由所有key组成的list
['Jack', 'Tom']
>>> list(tel.values()) #返回由所有value组成的list
[234, 789]
>>> 'Tom' in tel #成员测试
True
题目:
一、给定一个整数 num,将整数转换成罗马数字。
如 1,2,3,4,5对应的罗马数字分别为I,II,III,IV,V等,更详细的说明见此 链接。
输入格式
第一行输入一个整数 num(1≤num≤3999)
输出格式
输出 num 对应的罗马数字。
样例输入
123
样例输出
CXXIII
二、给定一个罗马数字 s,将罗马数字转换成整数。
如罗马数字I,II,III,IV,V分别代表数字 1,2,3,4,5。
首先要来了解一下罗马数字表示法,基本字符有 7 个:I、V、X、L、C、D、M,分别表示 1、5、10、50、100、500、1000。
在构成数字的时候,有下列规则:
1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:III =3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:VIII =8;XII =12;
3、小的数字,(限于Ⅰ、X和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:IV =4;IX =9;
4、正常使用时,连写的数字重复不得超过三次。
输入格式
输入一个罗马数字字符串,其对应的数字为 s(1≤s≤3999)。
输出格式
输出对应的整数 s。
样例输入
CXXIII
样例输出
123
代码如下:
def roman_to_num(s):
sum = 0
convert = {'M':1000,'D':500,'C':100,'L':50,'X':10,'V':5,'I':1}
for i in range(len(s)-1):
if convert[s[i]]<convert[s[i+1]]:
sum = sum -convert[s[i]]
else:
sum = sum+convert[s[i]]
return sum+convert[s[-1]]
s = input()
print(roman_to_num(s))
def num_to_roman(num):
g = {1:'I',2:'II',3:'III',4:'IV',5:'V',6:'VI',7:'VII',8:'VIII',9:'IX'}
s = {1:'X',2:'XX',3:'XXX',4:'XL',5:'L',6:'LX',7:'LXX',8:'LXXX',9:'XC'}
b = {1:'C',2:'CC',3:'CCC',4:'CD',5:'D',6:'DC',7:'DCC',8:'DCCC',9:'CM'}
q = {1:'M',2:'MM',3:'MMM'}
roman = ''
if num > 1000:
num_q = num // 1000
roman += q.get(num_q)
num %= 1000
if num > 100:
num_b = num // 100
roman += b.get(num_b)
num %= 100
if num > 10:
num_s = num // 10
roman += s.get(num_s)
num %= 10
if num > 0:
num_g = num
roman += g.get(num)
return roman
num = int(input())
print(num_to_roman(num))