[python] Problema con 'None'

Messaggioda crynow » 17/09/2020, 17:05

import matplotlib.pyplot as plt
import numpy as np

Codice:
# 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
crynow
Junior Member
Junior Member
 
Messaggio: 47 di 106
Iscritto il: 30/06/2019, 17:59

Re: [python] Problema con 'None'

Messaggioda niccoset » 21/09/2020, 15:04

La funzione
Codice:
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
Codice:
diagramma(...)
dove al termine della funzione scrivi
Codice:
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
Codice:
plt.show()
e non ritornare ed assegnare nessuna variabile.
" Tutto dovrebbe essere reso più semplice possibile, ma non più semplice ancora. " - Albert Einstein
niccoset
Average Member
Average Member
 
Messaggio: 287 di 584
Iscritto il: 13/06/2013, 07:17


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite