[python] Problema con 'None'
import matplotlib.pyplot as plt
import numpy as np
alla funzione def costi_minimi mi da come stampa:
None
risultato 1
risultato 2
risultato 3
None
Perchè è presente None? Come dovrei fare a non farlo uscire?
Grazie in anticipo
import numpy as np
# in questo punto il diagramma rappresenta il costo totale della recinzione in funzione di R (raggio). def diagramma(superficie_totale, costo_porzione_curva, costo_porzione_dritta) : R = 10 r =[] costo = [] while R >= 10 and R <= 25 : larghezza = 2 * R lunghezza = -((3.1415 * (R * R) - 3200) / (2 * larghezza)) perimetro_rettangolo = lunghezza + (2 * larghezza) perimetro_cerchio = 3.1415 * R Costo_porzione_curva = costo_porzione_curva * perimetro_cerchio Costo_porzione_dritta = costo_porzione_dritta * perimetro_rettangolo Costo_totale = Costo_porzione_curva + Costo_porzione_dritta costo.append(Costo_totale) r.append(R) R = R + 0.01 plt.plot(r, costo) plt.xlabel("Raggio") plt.ylabel("Costo (euro)") plt.title("Costi Totali in funzione del raggio") plt.grid('on') return plt.show() def costi_minimi(superficie_totale, costo_porzione_curva, costo_porzione_dritta) : R = 10 costo = [] lunghezze = [] r = [] while R >= 10 and R <= 25 : r.append(R) larghezza = 2 * R lunghezza = -((3.1415 * (R * R) - 3200) / (2 * larghezza)) lunghezze.append(lunghezza) perimetro_rettangolo = lunghezza + (2 * larghezza) perimetro_cerchio = 3.1415 * R Costo_porzione_curva = costo_porzione_curva * perimetro_cerchio Costo_porzione_dritta = costo_porzione_dritta * perimetro_rettangolo Costo_totale = Costo_porzione_curva + Costo_porzione_dritta costo.append(Costo_totale) R = R + 0.01 smallest = costo[0] for i in range(1, len(costo)) : if costo[i] < smallest : smallest = costo[i] print("Il costo minimo e': %.2f" % smallest, "euro") pos = costo.index(smallest) print("La lunghezza corrispondente al costo totale piu' basso e': %.2f " % lunghezze[pos], "metri") print("Il raggio corrispondente al costo totale piu' basso e': %.2f " % r[pos], "metri") def main() : superficie_totale = 1600 # m^2 costo_porzione_curva = 40 # euro/metro costo_porzione_dritta = 30 #e euro/metro grafico = diagramma(superficie_totale, costo_porzione_curva, costo_porzione_dritta) print(grafico) costo_minimo1 = costi_minimi(superficie_totale, costo_porzione_curva, costo_porzione_dritta) print(costo_minimo1) main()
alla funzione def costi_minimi mi da come stampa:
None
risultato 1
risultato 2
risultato 3
None
Perchè è presente None? Come dovrei fare a non farlo uscire?
Grazie in anticipo
Risposte
La funzione
Discorso simile per l'altra funzione
costi_minimi(...)non ritorna nulla. Dovresti addirittura ricevere un messaggio di warning dall'editor che stai usando per scrivere il tuo codice in quanto stai assegnando il valore di una variabile col risultato di una funzione che non ritorna niente.
Discorso simile per l'altra funzione
diagramma(...)dove al termine della funzione scrivi
return plt.show()ma ciò non ha molto senso in quanto quest'ultima funzione non ritorna nulla ma serve esclusivamente per visualizzare un grafico. Ti basta scrivere
plt.show()e non ritornare ed assegnare nessuna variabile.