PDA

View Full Version : [Python] Primo programmino


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. ;)

andbin
27-06-2006, 10:17
C'è qualcosa che si può migliorare?Mi rispondo da solo .... stavo leggendo adesso il libro Dive Into Python (http://www.diveintopython.org) e c'è proprio, tra gli esempi, la conversione in numeri romani .... ed usa un algoritmo molto semplice "a sottrazione" .... il mio quindi è 'na schifezza :cry: :nono:

Stiwy.NET
27-06-2006, 10:34
Mi rispondo da solo .... stavo leggendo adesso il libro Dive Into Python (http://www.diveintopython.org) e c'è proprio, tra gli esempi, la conversione in numeri romani .... ed usa un algoritmo molto semplice "a sottrazione" .... il mio quindi è 'na schifezza :cry: :nono:
Non abbatterti...spesso si fanno/scrivono cose inutili e ripetitive, ma almeno servono a capire come funzionano... eppoi farsi le cose aiuta ad imparare e tenere in esercizio la mente... io mi sono fatto un ftp-treeview in vb.net... è inutile... però è stato carino farlo... ora soddisfa quasi tutte le mie necessità...