Forum >> Principianti >> Non riesco a scatenare un errore

Pagina: 1

Salve ragazzi.

Da un mesetto che ho iniziato a imparare Python 3. Ho comprato il libro "Python" di Marco Beri e ho preso il "Programmazione in Python" di Kenneth in biblioteca(più avanti ho intenzione di comprarlo).


Nel libro di Beri sto provando tutti gli esempi nel IDE. Sono arrivato ad un esempio con classe di Verdura. Che deve scatenare un errore per i grassi nella verdura(carote) invece il mio codice gli assegna a carote(che naturalmente non possono avere grassi :sick:). Ho provato di copiarli dal libro, usare nel IDE, PyCharm(che mi ha suggerito qualche modifica, ma non funziona lo stesso)...

Vi posto il codice sotto che ho inserito nel IDE.>>>
class Cibo:
    """Un esempio di classe per gestire i cibi"""
    def __init__(self, proteine=0, carboidrati=0, grassi=0):
        self.proteine = proteine
        self.carboidrati = carboidrati
        self.grassi = grassi

        
>>> pasta = Cibo(proteine=12, carboidrati=72, grassi=1)
>>> def calcolaCalorie(self):
    return (self.proteine * 4 + self.carboidrati * 4 + self.grassi * 9)

>>> Cibo.calcolaCalorie = calcolaCalorie
>>> print(pasta.calcolaCalorie())
345
>>> class Verdura(Cibo):
    def __init__(self, proteine=0, carboidrati=0):
        self.grassi = 0
        self.proteine = proteine
        self.carboidrati = carboidrati

        
>>> melanzane = Verdura(proteine=1.5, carboidrati=2.5)
>>> print(melanzane.calcolaCalorie())
16.0
>>> class Verdura(Cibo):
    def __init__(self, proteine=0, carboidrati=0):
        Cibo.__init__(self, proteine = proteine, carboidrati = carboidrati, grassi = 0)

        
>>> Cibo.calorie = property(calcolaCalorie)
>>> melanzane.calorie
16.0
>>> pasta.calorie
345
>>> class Verdura(Cibo):
    def __init__(self, proteine=0, carboidrati=0):
        self.proteine = proteine
        self.carboidrati = carboidrati
        self.grassi = 0
    def getGrassi(self):
        return 0
    def setGrassi(self, grassi):
        if grassi > 0:
            raise Exception("Le verdure non hanno grassi")
        grassi = property(getGrassi, setGrassi)

        
>>> carote = Verdura(1, 7)
>>> carote.calorie
32
>>> carote.grassi
0
>>> carote.grassi = 100


Con ultimo comando deve scatenare un errore

Traceback (most recent call last): 
   File "< pyshell# 161 >", line 1, in < module > carote.grassi = 100
 
   File "< pyshell# 155 >", line 10, in setGrassi raise Exception(" Le 

verdure non hanno grassi") 
Exception: Le verdure non hanno grassi

Invece con comando
carote.grassi = 100
mi assegna 100 grassi alle carote.
>>> carote.grassi
100
>>> 
Grazie e buon coding a tutti!!! ;)


--- Ultima modifica di Skrypnyk81 in data 2016-11-30 22:21:38 ---
Sposta la riga grassi = property(getGrassi, setGrassi) di una indentazione a sinistra.



Ciao.
Marco.
Ciao Marco.
Grazie per correzione, adesso mi funzione come nel libro ;).

A dir vero non aspettavo che mi risponde direttamente autore del libro, sono emozionato tanto. Come nei giochi che costruisci una torre sale difesa. Anche per me è salita la voglia di imparare Python al livelli massimi :embarrassed:.

Comunque ho salvato intero codice nel Notepad++, per non riscriverlo ogni giorno. Ho notato una cosa che forse aiuta a qualcuno come me capire meglio se qualcosa non va nelle classi.

Nell'immagine(allegata) giusto tutta la colona si illumina meta rossa collegata alla classe.

Nell'immagine sbagliata si illuminavano solo ultime tre righe, come ho capito non erano collegati a tutta la classe.

Bene questo problema è stata risolta passo alla prossima nel nuovo post.

Buon coding a tutti.


Allegati
:D :D



Ma buon coding anche a te.




Ciao.
Marco.





Pagina: 1



Esegui il login per scrivere una risposta.