Forum
>>
Principianti
>>
Non riesco a scatenare un errore
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da Skrypnyk81 ![]() |
2016-11-30 21:50:31 - Non riesco a scatenare un errore
|
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 ![]() 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 = 100mi 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 --- |
|
Scritto da Marco Beri ![]() |
2016-12-01 09:38:21 - Re: Non riesco a scatenare un errore
|
Sposta la riga grassi = property(getGrassi, setGrassi) di una indentazione a sinistra.
Ciao. Marco. |
|
Scritto da Skrypnyk81 ![]() |
2016-12-01 19:33:27 - Re: Non riesco a scatenare un errore
|
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 ![]() 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. |
|
Scritto da Marco Beri ![]() |
2016-12-01 19:47:55 - Re: Non riesco a scatenare un errore
|
![]() ![]() Ma buon coding anche a te. Ciao. Marco. |
Pagina: 1
Esegui il login per scrivere una risposta.