|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
|
[Python] - Esercizio da principiante
Ciao a tutti ho appena finito questo esercizio in python e volevo un parere dagli esperti il testo è il seguente:
Esercizio: scrivi una funzione Pendenza(x1, y1, x2, y2) che ritorna il valore della pendenza della retta passante per i punti (x1, y1) e (x2, y2). Poi usa questa funzione in una seconda funzione chiamata IntercettaY(x1, y1, x2, y2) che ritorna il valore delle ordinate quando la retta determinata dagli stessi punti ha X uguale a zero. def Pendenza(x1,y1,x2,y2): if (x1 == 0) and (x2 == 0): print "Immettere valori superiori allo 0" else: dx = x2 - x1 if dx ==0: print "Impossibile" else: ny = y2 - y1 Temp = ny / dx return Temp def IntercettaY(x1,y1,x2,y2): x = input("Dammi il valore di X: ") if x > 0: return Pendenza(x1,y1,x2,y2) * x else: return y1,y2 L'ho testato un paio di volte e non sembra che ci siano errori.
__________________
------------------------------------------------------------------------------------------------------------ Intel Core 2 Duo 2.66Ghz - 3gb Ram - Hard Disk 250gb - Scheda Video: GeForce 8500 Gt da 512mb - Windows Xp Pro SP3 IPHONE 3GS 16GB BLACK MACBOOK PRO 15,4" 2.40GHz - 4GB RAM 320GB HD ------------------------------------------------------------------------------------------------------------ |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Codice:
def Pendenza(x1, y1, x2, y2): if x1 > 0 and x2 > 0: print "Immettere valori superiori allo 0" else: dx = x2 - x1 if not dx: print "Impossibile" else: ny = y2 - y1 Temp = ny / dx return Temp def IntercettaY(x1, y1, x2, y2): x = input("Dammi il valore di X: ") if x > 0: return Pendenza(x1, y1, x2, y2) * x else: return y1, y2
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Per prima cosa usa il tag CODE, altrimenti non si capisce nulla dato che si perde l'indentazione.
Non capisco la prima condizione nella funzione pendenza. Cosa vorresti fare? Il caso in cui entrambi i valori sono nulli è già coperto da dx!=0. Inoltre volendo sarebbe lecito inserire valori come x1=-1 e x2=-2. I valori sono inferiori a zero ma la condizione non se ne accorge. Ovviamente la funzione calcola il valore corretto dato che è possibile calcolare la pendenza anche per valori negativi delle x. Per quanto riguarda intercetta: la retta passante per due punti è Y = pendenza(...)(X-x0)+y0 Ponendo X=0 Y=y0-pendenza*x0. Mi sa che ti sei dimenticato qualche pezzo nella formula. Inoltre non capisco cosa tu voglia fare con return y1,y2.
__________________
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
Codice:
Dammi il valore di X: 2 Immettere valori superiori allo 0 Traceback (most recent call last): File "/home/fullsyst3m/Scrivania/pendenza.py", line 26, in <module> IntercettaY (5,11,63,2) File "/home/fullsyst3m/Scrivania/pendenza.py", line 21, in IntercettaY return Pendenza(x1, y1, x2, y2) * x File "/home/fullsyst3m/Scrivania/pendenza.py", line 14, in Pendenza return Temp UnboundLocalError: local variable 'Temp' referenced before assignment Codice:
Dammi il valore di X: 3 Immettere valori superiori allo 0 Traceback (most recent call last): File "/home/fullsyst3m/Scrivania/pendenza.py", line 26, in <module> IntercettaY (5,11,63,2) File "/home/fullsyst3m/Scrivania/pendenza.py", line 21, in IntercettaY return Pendenza(x1, y1, x2, y2) * x TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
|
il codice è stato modificato non preoccuparti gli errori sono stati eliminati :P
__________________
------------------------------------------------------------------------------------------------------------ Intel Core 2 Duo 2.66Ghz - 3gb Ram - Hard Disk 250gb - Scheda Video: GeForce 8500 Gt da 512mb - Windows Xp Pro SP3 IPHONE 3GS 16GB BLACK MACBOOK PRO 15,4" 2.40GHz - 4GB RAM 320GB HD ------------------------------------------------------------------------------------------------------------ |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Nel topic non è stato modificato, è sbagliato. Se poi lo hai modificato tu per i fatti tuoi è un altro paio di maniche!
![]()
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
|
eheh lo so :P
__________________
------------------------------------------------------------------------------------------------------------ Intel Core 2 Duo 2.66Ghz - 3gb Ram - Hard Disk 250gb - Scheda Video: GeForce 8500 Gt da 512mb - Windows Xp Pro SP3 IPHONE 3GS 16GB BLACK MACBOOK PRO 15,4" 2.40GHz - 4GB RAM 320GB HD ------------------------------------------------------------------------------------------------------------ |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Io ho testato un pò questo codice che ho scritto (che è molto simile al tuo comunque) e ho notato questo:
Codice:
def Pendenza (x1,y1,x2,y2): if (x1 == 0) and (x2 == 0): print "Inserire solo numeri maggiori di 0" else: dx = x2 - x1 if not dx: print "Impossibile" else: ny = y2 - y1 temp = dx / ny print temp return temp def IntercettaY (x1,y1,x2,y2): x = input ("Inserisci un numero:") if x > 0: print Pendenza (x1,y1,x2,y2) return Pendenza (x1,y1,x2,y2) else: print y1, y2 return y1, y2 IntercettaY (5,2,4,6) P.S: ho inserito i print perchè lavorando nell'idle i return non vengono interpretati come nella command line, cosi per visualizzare i valori bisogna usare l'istruzione print
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Il primo che salta all'occhio è la tentata moltiplicazione della funzione Pendenza * x. Che ovviamente dà errore
![]() P.S: mi hai copiato la firma eh? Cavallo copiaiolo...
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Il mio consiglio, comunque, è quello di abbandonare IDLE e usare un editor decente. Puoi usare SPE, Komodo Edit o PyScripter.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
P.S: nel tuo codice un altro errore è la moltiplicazione di Pendenza con x
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
#13 |
Member
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
|
Esercizio: tenta di generare un numero casuale compreso tra il \linebreak LimiteInferiore (compreso) ed il LimiteSuperiore (escluso).
Codice:
import random def NumeroCasuale1(a,b): #a,b sono i parametri inferiore superiore x = random.uniform(a,b) print x A me sembra corretto che dite?
__________________
------------------------------------------------------------------------------------------------------------ Intel Core 2 Duo 2.66Ghz - 3gb Ram - Hard Disk 250gb - Scheda Video: GeForce 8500 Gt da 512mb - Windows Xp Pro SP3 IPHONE 3GS 16GB BLACK MACBOOK PRO 15,4" 2.40GHz - 4GB RAM 320GB HD ------------------------------------------------------------------------------------------------------------ |
![]() |
![]() |
![]() |
#14 | |||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Quote:
![]() Quote:
![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||
![]() |
![]() |
![]() |
#15 |
Member
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
|
Esercizio addizionale: genera un numero intero compreso tra il \linebreak LimiteInferiore ed il LimiteSuperiore comprendendo entrambi questi limiti.
Codice:
def NumeroCasuale2(a,b): x = random.randint(a,b) print x
__________________
------------------------------------------------------------------------------------------------------------ Intel Core 2 Duo 2.66Ghz - 3gb Ram - Hard Disk 250gb - Scheda Video: GeForce 8500 Gt da 512mb - Windows Xp Pro SP3 IPHONE 3GS 16GB BLACK MACBOOK PRO 15,4" 2.40GHz - 4GB RAM 320GB HD ------------------------------------------------------------------------------------------------------------ |
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
![]() Comunque è vero, con tutti questi codici e quote mi gira la testa ![]() Non vedo l'ora pure io di arrivare a random ecc, troppo bello! E siamo solo all'inizio del libro!
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() x ~FullSyst3m~, ma non solo: con le versioni di Python col tempo sono state aggiunte tante cosucce interessanti. ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
![]() |
![]() |
![]() |
#18 | ||
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
![]() Quote:
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
||
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Vuol dire che oltre alla guida ora ci sono anche altre cose?? Stupendo!! E queste cosucce interessanti le troverò nella documentazione ufficiale immagino..
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ovviamente. Se il libro si riferisce a Python 2.0, ad esempio, puoi andare a spulciarti What's new in Python 2.1, What's new in Python 2.2, ecc. Di roba nuova introdotta man man ne troverai a carrettate.
![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:15.