PythonでRoman numerals

f:id:g_YUYUYU:20140521173720j:plain

コード

def checkio(data):
	n4 = [0,1000,2000,3000]
	r4 = ["","M","MM","MMM"]
	n3 = [0,100,200,300,400,500,600,700,800,900]
	r3 = ["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"]
	n2 = [0,10,20,30,40,50,60,70,80,90]
	r2 = ["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"]
	n1 = [0,1,2,3,4,5,6,7,8,9,10]
	r1 = ["","I","II","III","IV","V","VI","VII","VIII","IX","X"]
		
	d = list(str(data).zfill(4))

	m4 = int(d[0] + "000")
	m3 = int(d[1] + "00")
	m2 = int(d[2] + "0")
	m1 = int(d[3])

	s = ""
	
	if m4 in n4:
		s = r4[n4.index(m4)]
	if m3 in n3:
		s = s + r3[n3.index(m3)]
	if m2 in n2:
		s = s + r2[n2.index(m2)]
	if m1 in n1:
		s = s + r1[n1.index(m1)]
	print s

#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
#	checkio(6) #== 'VI'
#	checkio(13) #== 'XIII'
#	checkio(44) #== 'XL IV'
	checkio(76) #== 'LXX VI'
	checkio(602) #== "DCII"
	checkio(3810) #== "MMMDCCCX"
#	checkio(3999) #== 'MMM CM XC IX'