Code: Alles auswählen
def format_roman(case, counter):
ones = ['i', 'x', 'c', 'm']
fives = ['v', 'l', 'd']
label, index = '', 0
# This will die of IndexError when counter is too big
while counter > 0:
counter, x = divmod(counter, 10)
if x == 9:
label = ones[index] + ones[index+1] + label
elif x == 4:
label = ones[index] + fives[index] + label
else:
if x >= 5:
s = fives[index]
x = x-5
else:
s = ''
s = s + ones[index]*x
label = s + label
index = index + 1
if case == 'I':
return label.upper()
return label
for i in xrange(20):
print format_roman("I", i)
Ist allerdings nicht von mir, sondern steckt in den Standard lib im formatter.AbstractFormatter Hab es nur aus der Klasse herraus gelöst.I
II
III
IV
V
VI
VII
VIII
IX
X
XI
XII
XIII
XIV
XV
XVI
XVII
XVIII
XIX
Ist nicht in der Doku erwähnt, siehe: http://docs.python.org/dev/library/form ... -formatter
Dumm finde ich das mit dem .upper() irgendwie komisch gemacht, statt True/False zu nehmen...