Forum >> Principianti >> Mi dareste una mano?

Pagina: 1

Messaggio annotato da Daniele aka Palmux :
Questa discussione è stata spostata dalla categoria Blog.
Sono una principiante di python e sto seguendo una guida che da anche degli esercizi fra cui dover creare un programma che ti può calcolare l'area di varie figure a scelta dell'utente utilizzando delle funzioni e nonostante mi sembri tutto giusto Python IDLE dice che c'è un'errore che non trovo a linea 23 e non mi fa eseguire il programma.
Mi dareste una mano?
Questo è il codice che ho scritto:#scelta figura
a = raw_input ("Vuoi sapere l'area di un cerchio,di un quadrato o di un rettangolo?")
#funzione per l'area del cerchio
def cerchio (r, ac) :
if a == "Cerchio" or "cerchio" :
r = raw_input ("Il raggio è ")
ac = r**2*3.14
print "L'area è ", ac
#funzione per l'area del quadrato
def quadrato (l, aq) :
if a == "Quadrato" or "quadrato" :
l = raw_input ("Il lato è ")
aq = l**2
print "L'area è ", aq
#funzione per l'area del rettangolo
def rettangolo (b, h, ar) :
if a == "rettangolo" or "Rettangolo" :
b = raw_input ("La base è ")
h = raw_input ("L'altezza è ")
ar = b*h
print "L'area è ", ar
#corpo principale
return cerchio (r, ac)
return quadrato (l, aq)
return rettangolo (b, h, ar)

In questo momento sono di corsa, ma ad occhio e croce stai facendo un bel po' di casino.

1. Il return fuori dalle funzioni non è corretto.

Esempio corretto:
def test():
    return "Sono un return"
Il return restituisce una stringa quando invochi test(), ma non stampa nulla.

Nel tuo esempio:
def test():
    print a = "Sono un return di test"

def testone():
    print b = "Sono un return"
    

return test() #non ha senso
return testone() #non ha senso
Intanto prova con un semplice:
#corpo principale
cerchio(r, ac)
quadrato(l, aq)
rettangolo(b, h, ar)

2. Richiami le funzioni, ma non hai definito cosa passare. Quando scrivi:
cerchio(r, ac)
Passi r e ac alla funzione, ma non sono valorizzati, tu vorresti farlo dentro la funzione, ma è logicamente sbagliato. Dovresti fare una cosa del genere:

def cerchio(r) :
   ac = (r**2)*3.14
   return "L'area è ", ac

# Input del raggio e 
r = raw_input("Raggio: ")
print cerchio(r)
Il codice che ti mostro è una schifezza, non tiene conto del fatto che qualcuno potrebbe metterci un carattere non numerico, anzi forse manco andrà, ma ti serva per capire logicamente il flusso corretto.

Ti consiglio caldamente di approfondire lo studio delle funzioni, non credo che tu le abbia molto chiare in questo momento.

Ciao.
Daniele aka Palmux


--- Ultima modifica di Daniele aka Palmux in data 2014-11-25 20:14:15 ---


Pagina: 1



Esegui il login per scrivere una risposta.