[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