andbin
23-06-2006, 17:25
Ho realizzato il mio primo programmino in Python. Serve per convertire un numero dalla numerazione decimale alla numerazione romana.
#! /usr/bin/env python
class BadNumberException(Exception):
def __init__ (self, value):
self.value = value
def __str__ (self):
return repr (self.value)
def format_roman_digit (digit, roman1, roman5, roman10):
if digit >= 1 and digit <= 3:
return roman1 * digit
elif digit == 4:
return roman1 + roman5
elif digit >= 5 and digit <= 8:
return roman5 + roman1 * (digit-5)
elif digit == 9:
return roman1 + roman10
else:
return ""
def roman_number (num):
if num < 1 or num > 3999:
raise BadNumberException ("bad number " + str(num))
roman = format_roman_digit (num/1000, "M", "", "")
num %= 1000
roman += format_roman_digit (num/100, "C", "D", "M")
num %= 100
roman += format_roman_digit (num/10, "X", "L", "C")
num %= 10
roman += format_roman_digit (num, "I", "V", "X")
return roman
if __name__ == '__main__':
import sys
if len (sys.argv) == 2:
strnum = sys.argv[1]
try:
r = roman_number (int (strnum))
print "roman =", r
except ValueError:
print "invalid input: " + strnum
except BadNumberException, err:
print errIl programma funziona bene. Vi sembra ben scritto?? C'è qualcosa che si può migliorare?
Grazie. ;)
#! /usr/bin/env python
class BadNumberException(Exception):
def __init__ (self, value):
self.value = value
def __str__ (self):
return repr (self.value)
def format_roman_digit (digit, roman1, roman5, roman10):
if digit >= 1 and digit <= 3:
return roman1 * digit
elif digit == 4:
return roman1 + roman5
elif digit >= 5 and digit <= 8:
return roman5 + roman1 * (digit-5)
elif digit == 9:
return roman1 + roman10
else:
return ""
def roman_number (num):
if num < 1 or num > 3999:
raise BadNumberException ("bad number " + str(num))
roman = format_roman_digit (num/1000, "M", "", "")
num %= 1000
roman += format_roman_digit (num/100, "C", "D", "M")
num %= 100
roman += format_roman_digit (num/10, "X", "L", "C")
num %= 10
roman += format_roman_digit (num, "I", "V", "X")
return roman
if __name__ == '__main__':
import sys
if len (sys.argv) == 2:
strnum = sys.argv[1]
try:
r = roman_number (int (strnum))
print "roman =", r
except ValueError:
print "invalid input: " + strnum
except BadNumberException, err:
print errIl programma funziona bene. Vi sembra ben scritto?? C'è qualcosa che si può migliorare?
Grazie. ;)