感觉自己不太会,有点麻烦,想着求余数啥的,最后还是无从下手,在看别人的解答中找了简单易懂的几种答案,所以说思想很重要!
1.设置是从大到小,为了便于比较,同时把题目所说的6种情况考虑了进去。
def intToRoman(num):
d={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'}
a=''
for i in d:
while num>=i:
a=a+d[i]
num=num-i
print(a)
intToRoman(9)
intToRoman(58)
1.res=res+num // x * v_c[x] //用来求商,可以知道需要几个重复值,当然这里重复只可能是M,I,其余的都应该只有一倍。2.num=num%x %用来求余数,以便进行下一次循环。
def intToRoman(num):
res = ''
v_c = {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'}
for x in v_c:
res=res+num // x * v_c[x]
num=num%x
print(res)
intToRoman(9)
intToRoman(58)