要开始复习算法,在leetcoe上面刷中等难度的算法题
罗马数字
python3
# 先把特殊数字和罗马数字按顺序存在数组中,这样就不用单独判断特殊情况
sum = [
{
'zifu': 'I',
'number': 1
},{
'zifu': 'IV',
'number': 4
},{
'zifu': 'V',
'number': 5
},{
'zifu': 'IX',
'number': 9
},{
'zifu': 'X',
'number': 10
},{
'zifu': 'XL',
'number': 40
},{
'zifu': 'L',
'number': 50
},{
'zifu': 'XC',
'number': 90
},{
'zifu': 'C',
'number': 100
},{
'zifu': 'CD',
'number': 400
},{
'zifu': 'D',
'number': 500
},{
'zifu': 'CM',
'number': 900
},{
'zifu': 'M',
'number': 1000
}
]
num = int(input())
re = ['"'] #存储得到的结果
# 判断特殊情况
# if num == 4:
# print('IV')
# elif num == 9:
# print('IX')
# elif num ==40:
# print('XL')
# elif num == 90:
# print('XC')
# elif num == 400:
# print('CD')
# elif num == 900:
# print('CM')
# else:
while num > 0:
for i in range(len(sum)):
# print(i)
if i < len(sum) - 1:
if sum[i]['number'] <= num and sum[i + 1]['number'] > num:
# 如果找到,那么就开始从0到i-1找,重复这个方法
re.append(sum[i]['zifu'])
num = num - sum[i]['number']
break
else:
re.append(sum[i]['zifu'])
num = num - sum[i]['number']
break
# print('this is num:',num)
re.append('"')
print(''.join(re)) #将数组元素拼接成字符串
以为题目要求输出时两边要有引号,所以在初始化和最后的时候都append了一下",但在提交的时候是不需要的