[Python] Funzione che ritorna None.
Gabriel Battaglia (Kriyaban)
iz4apu a libero.it
Gio 28 Mar 2013 15:03:41 CET
buongiorno.
In questo esempio di codice, lo scopo è implementare un tipo di dato astratto, il tipo frazione.
L'utilità è principalmente didattica.
Tutto apparentemente funziona, tranne nella riga in cui sommo 8/3° con 11/47°. Il ritorno che ottengo è None.
Si tratta di un errore semantico che non riesco ad individuare.
Ecco il codice.
# Dall'appendice B di pensare da informatico.
class Frazione:
"""Classe che implementa il tipo di dato a Frazione."""
def __init__(self, Numeratore=1, Denominatore=1):
mcd = MCD(Numeratore, Denominatore)
self.Numeratore = Numeratore / mcd
self.Denominatore = Denominatore / mcd
def __str__(self):
return "%d/%d" % (self.Numeratore, self.Denominatore)
def __mul__(self, Altro):
if type(Altro) == type(5):
Altro = Frazione(Altro)
__rmul__ = self.__mul__
return Frazione(self.Numeratore * Altro.Numeratore,
self.Denominatore * Altro.Denominatore)
def __add__(self, Altro):
__radd__ = self.__add__
if type(Altro) == type(5):
Altro = Frazione(Altro)
return Frazione(self.Numeratore * Altro.Denominatore + self.Denominatore * Altro.Numeratore)
def MCD(m,n):
"""Massimo Comun Divisore"""
if m % n == 0:
return n
else:
return MCD(n, m%n)
# Il seguente codice puo' essere rimosso in quanto serve solo come test.
print "Stampo una frazione 14 / 32."
print Frazione(14,32)
print "Sommo 8/3 e 11/47"
print Frazione(8,3)+Frazione(11, 47)
print "Moltiplico 2/7 * 9/2"
print Frazione(2,7)*Frazione(9,2)
Maggiori informazioni sulla lista
Python