Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-03-2009, 19:54   #1
nuvolare
Member
 
Iscritto dal: Jan 2006
Messaggi: 299
Programmazione con Python

Ciao a tutti, mi trovo alle prese con le classi ed oggetti di pyhton, utilizzo il pensare come libro.
Questo è il primo esempio.
Codice:
class Punto:											
	P1.x = 3.0		#definisco la classe Punto
	P1.y = 4.0		#definisco la varibile P1 e gli attributi
	print'(' + str(P1.x) +', '+ str(P1.y) + ')'
	DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y

P1 = Punto()
print P1.x
print P1.y
Il libro mi specifica pure che la riga del print stampa (3.0, 4.0) e la riga seguente il valore 25.0 che è il risultato dell'operazione.
Quindi, a detta del libro, dovrebbe andare tutto bene, invece appena metto il codice su Terminale visualizzo :

Codice:
class Punto:                                                                                  
     P1.x = 3.0
     P1.y = 4.0
     print'(' + str(P1.x) +', '+ str(P1.y) + ')'
     DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y
      
(3.0, 4.0)
>>> P1 = Punto()
>>> print P1.x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Punto instance has no attribute 'x'
>>> print P1.y
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Punto instance has no attribute 'y'
Cos'è che sbaglio?
nuvolare è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2009, 20:02   #2
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da nuvolare Guarda i messaggi
Ciao a tutti, mi trovo alle prese con le classi ed oggetti di pyhton, utilizzo il pensare come libro.
Questo è il primo esempio.
Codice:
class Punto:											
	P1.x = 3.0		#definisco la classe Punto
	P1.y = 4.0		#definisco la varibile P1 e gli attributi
	print'(' + str(P1.x) +', '+ str(P1.y) + ')'
	DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y

P1 = Punto()
print P1.x
print P1.y
Il libro mi specifica pure che la riga del print stampa (3.0, 4.0) e la riga seguente il valore 25.0 che è il risultato dell'operazione.
Quindi, a detta del libro, dovrebbe andare tutto bene, invece appena metto il codice su Terminale visualizzo :

Codice:
class Punto:                                                                                  
     P1.x = 3.0
     P1.y = 4.0
     print'(' + str(P1.x) +', '+ str(P1.y) + ')'
     DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y
      
(3.0, 4.0)
>>> P1 = Punto()
>>> print P1.x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Punto instance has no attribute 'x'
>>> print P1.y
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Punto instance has no attribute 'y'
Cos'è che sbaglio?
Sbagli la stessa cosa dell'alto giorno: non puoi usare P1.x dentro la classe se P1 non lo hai referenziato. E il libro lo fa vedere chiaro:
Codice:
class Punto:
    pass

P1 = Punto()
P1.x = 10
P1.y = 11
E la stessa cosa vale per il resto del codice: non puoi usare P1 se non esiste.
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2009, 20:05   #3
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Puoi postare il codice completo del libro, e dirmi che versione usi di Python?

Intanto ti dico che, giustamente, Python ti segnala che quell'istanza non possiede gli attribuiti x e y.
__________________
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2009, 21:07   #4
nuvolare
Member
 
Iscritto dal: Jan 2006
Messaggi: 299
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
E il libro lo fa vedere chiaro:
Codice:
class Punto:
    pass

P1 = Punto()
P1.x = 10
P1.y = 11
E la stessa cosa vale per il resto del codice: non puoi usare P1 se non esiste.
Ma sul mio libro c'è scritto questo
Codice:
class Punto:													pass		
	P1 = Punto()
		P1.x = 3.0
		P1.y = 4.0
		print'(' + str(P1.x) +', '+ str(P1.y) + ')'
		DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y

print P1.x
print P1.y
La versione di python che utilizzo è la 2.5.4 e se scrivo su IDLE ottengo:

Codice:
class Punto:											
	P1.x = 3.0		#definisco la classe Punto
	P1.y = 4.0		#definisco la varibile P1 e gli attributi
	print'(' + str(P1.x) +', '+ str(P1.y) + ')'
	DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y

P1 = Punto()
print P1.x
print P1.y
SyntaxError: invalid syntax
Se invece scrivo su Terminale ottengo :

Codice:
class Punto:                                                                                  
     P1.x = 3.0              #definisco la classe Punto
     P1.y = 4.0              #definisco la varibile P1 e gli attributi
     print'(' + str(P1.x) +', '+ str(P1.y) + ')'
     DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y
 
(3.0, 4.0)
P1 = Punto()
print P1.x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Punto instance has no attribute 'x'
print P1.y
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Punto instance has no attribute 'y'
nuvolare è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2009, 21:17   #5
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da nuvolare Guarda i messaggi
Ma sul mio libro c'è scritto questo
Codice:
class Punto:													pass		
	P1 = Punto()
		P1.x = 3.0
		P1.y = 4.0
		print'(' + str(P1.x) +', '+ str(P1.y) + ')'
		DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y

print P1.x
print P1.y
La versione di python che utilizzo è la 2.5.4 e se scrivo su IDLE ottengo:

Codice:
class Punto:											
	P1.x = 3.0		#definisco la classe Punto
	P1.y = 4.0		#definisco la varibile P1 e gli attributi
	print'(' + str(P1.x) +', '+ str(P1.y) + ')'
	DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y

P1 = Punto()
print P1.x
print P1.y
SyntaxError: invalid syntax
Se invece scrivo su Terminale ottengo :

Codice:
class Punto:                                                                                  
     P1.x = 3.0              #definisco la classe Punto
     P1.y = 4.0              #definisco la varibile P1 e gli attributi
     print'(' + str(P1.x) +', '+ str(P1.y) + ')'
     DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y
 
(3.0, 4.0)
P1 = Punto()
print P1.x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Punto instance has no attribute 'x'
print P1.y
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Punto instance has no attribute 'y'
Scusa, mi dai il link al documento che stai studiando?
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 09:31   #6
nuvolare
Member
 
Iscritto dal: Jan 2006
Messaggi: 299
il link è questo http://www.python.it/doc/Howtothink/...-it/chap12.htm

Poi una domanda ma il libro perché mi dice di fare questa sequenza se è sbagliata?

e mi dicevi che il libro fa l'esempio della sequenza iniziale del codice con il pass in questo modo
Codice:
class Punto
    pass
e quindi mi fa capire che così si definisce una classe, ma poi poche righe sotto mi dice:
"L'istruzione pass non ha effetti è stata inserita solo per il solo fatto che la definizione prevede un corpo che deve ancora essere scritto"

Quindi desumo che non va usato, giusto?

Poi più avanti mi dice :
"Per creare un oggetto di tipo Punto viene chiamata una funzione chiamata Punto:
Codice:
P1 = Punto()
Poi mi dice di aggiungere un dato all'istanza
Codice:
P1.x = 3.0
P1.y = 4.0
e poi per stampare gli attributi delle variabili P1 :
Codice:
print P1.y
print P1.x
e poi per ultimo mi dice l'operazione per stampare il risultato e per effettuare l'operazione della Distanza al quadrato:

Codice:
print'(' + str(P1.x) +', '+ str(P1.y) + ')'
	DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y
Dall'unione di tutto questo ho formato il codice che mi avete detto essere sbagliato.
nuvolare è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 09:48   #7
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da nuvolare Guarda i messaggi
il link è questo http://www.python.it/doc/Howtothink/...-it/chap12.htm

Poi una domanda ma il libro perché mi dice di fare questa sequenza se è sbagliata?

e mi dicevi che il libro fa l'esempio della sequenza iniziale del codice con il pass in questo modo
Codice:
class Punto
    pass
e quindi mi fa capire che così si definisce una classe, ma poi poche righe sotto mi dice:
"L'istruzione pass non ha effetti è stata inserita solo per il solo fatto che la definizione prevede un corpo che deve ancora essere scritto"

Quindi desumo che non va usato, giusto?

Poi più avanti mi dice :
"Per creare un oggetto di tipo Punto viene chiamata una funzione chiamata Punto:
Codice:
P1 = Punto()
Poi mi dice di aggiungere un dato all'istanza
Codice:
P1.x = 3.0
P1.y = 4.0
e poi per stampare gli attributi delle variabili P1 :
Codice:
print P1.y
print P1.x
e poi per ultimo mi dice l'operazione per stampare il risultato e per effettuare l'operazione della Distanza al quadrato:

Codice:
print'(' + str(P1.x) +', '+ str(P1.y) + ')'
	DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y
Dall'unione di tutto questo ho formato il codice che mi avete detto essere sbagliato.
Come dice il libro, il pass è un segnaposto, non fa nulla. Quel codice tu non lo devi scrivere dentro la classe, il libro te lo avrebbe detto, devi scriverlo al di fuori, come ti ho già spiegato e fatto vedere.
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 12:07   #8
nuvolare
Member
 
Iscritto dal: Jan 2006
Messaggi: 299
Ho capito l'errore....

Allora io facevo questo :
Codice:
class Punto:													pass		
	P1 = Punto()
		P1.x = 3.0
		P1.y = 4.0
print P1.x
print P1.y
Invece dovevo fare questo :
Codice:
>>> class Punto:
	pass

	
>>> p1 = Punto()
>>> P1.x = 3.0
>>> P1.y = 4.0
>>> 
>>> print P1.x
3.0
>>> print P1.y
4.0
Ed inserire il codice quando mi spuntavano le >>>, cosa che io non facevo ed attaccavo tutto....

Adesso un dubbio.
Dato questo codice:
Codice:
>>> class Punto:
	pass

	
>>> P1.x = 3.0
>>> P1.y = 4.0
>>> print'(' + str(P1.x) +', '+ str(P1.y) + ')'
(3.0, 4.0)
>>> DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y
>>>
Perché il print mi stampa il risultato ed invece il passaggio successivo non mi fa le moltiplicazioni e mi stampa i >>> ?

@FULL
Tu mi parlavi di dentro la classe e fuori la classe, io non so se ti riferivi a quello che o scoperto adesso, perché non capivo cosa intendevi, e quindi continuavo a non seguire.
Comunque grazie lo stesso.

Ultima modifica di nuvolare : 01-04-2009 alle 12:26.
nuvolare è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 12:36   #9
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da nuvolare Guarda i messaggi
Ho capito l'errore....

Allora io facevo questo :
Codice:
class Punto:													pass		
	P1 = Punto()
		P1.x = 3.0
		P1.y = 4.0
print P1.x
print P1.y
Invece dovevo fare questo :
Codice:
>>> class Punto:
	pass

	
>>> p1 = Punto()
>>> P1.x = 3.0
>>> P1.y = 4.0
>>> 
>>> print P1.x
3.0
>>> print P1.y
4.0
Ed inserire il codice quando mi spuntavano le >>>, cosa che io non facevo ed attaccavo tutto....

Adesso un dubbio.
Dato questo codice:
Codice:
>>> class Punto:
	pass

	
>>> P1.x = 3.0
>>> P1.y = 4.0
>>> print'(' + str(P1.x) +', '+ str(P1.y) + ')'
(3.0, 4.0)
>>> DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y
>>>
Perché il print mi stampa il risultato ed invece il passaggio successivo non mi fa le moltiplicazioni e mi stampa i >>> ?
Perchè fai un assegnamento. Stai assegnando il valore di quell'espressione alla variabile DistanzaAlQuadrato. Se vuoi vedere il risultato printa la variabile

Codice:
print DistanzaAlQuadrato
Quote:
@FULL
Tu mi parlavi di dentro la classe e fuori la classe, io non so se ti riferivi a quello che o scoperto adesso, perché non capivo cosa intendevi, e quindi continuavo a non seguire.
Comunque grazie lo stesso.
Si, mi riferivo a questo. Dentro la classe significa dentro il corpo della classe. L'indentazione in Python è importantissima.
Codice:
class Punto:
    dentro la classe
    dentro la classe

fuori la classe
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 12:43   #10
nuvolare
Member
 
Iscritto dal: Jan 2006
Messaggi: 299
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Si, mi riferivo a questo. Dentro la classe significa dentro il corpo della classe. L'indentazione in Python è importantissima.
Si, ok adesso ho fatto il print di DistanzaAlQuadrato ed è uscito il risultato.
Il problema e che di identazione non ne ha mai parlato questo libro, quindi quello che so e grazie a te ai vari forum e agli esperimenti fatti.
Ma non c'è un listato di quando e come fare l'identazione?
Tipo, dopo il print, dopo al funzione, in questo senso, perché altrimenti non so mai quando è giusto e quando non lo è.
Grazie
nuvolare è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 13:45   #11
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da nuvolare Guarda i messaggi
Si, ok adesso ho fatto il print di DistanzaAlQuadrato ed è uscito il risultato.
Il problema e che di identazione non ne ha mai parlato questo libro, quindi quello che so e grazie a te ai vari forum e agli esperimenti fatti.
Ma non c'è un listato di quando e come fare l'identazione?
Tipo, dopo il print, dopo al funzione, in questo senso, perché altrimenti non so mai quando è giusto e quando non lo è.
Grazie
Ne parla nei primi capitoli dell'indentazione. Comunque l'indentazione si usa quando devi inserire delle istruzioni in un blocco. Ad esempio dentro una funzione, una classe, un ciclo for, un while ecc.

Se usi un IDE mezzo decente impari a capire quando usarla, ti indenta in automatico il codice. Infine, non usare sempre il terminale, cosi fai solo confusione. Usalo solo quando devi fare qualche prova al volo, per il resto usa l'IDE. Cosi puoi modificare il file quando vuoi, salvarlo e imparare come usare l'indentazione.
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 15:17   #12
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Ho creato un mostro!
__________________
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 16:41   #13
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Ho creato un mostro!
Dai che mi fai arrossire
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 17:29   #14
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
In pochi mesi sei passato dal chiedere spiegazioni a fornirle. Direi che c'è ben poco da commentare. Complimenti.
__________________
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 18:13   #15
sim89
 
Messaggi: n/a
Quoto e rinnovo i complimenti, ogni tanto leggo anche in questa sezione
  Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 20:00   #16
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
In pochi mesi sei passato dal chiedere spiegazioni a fornirle. Direi che c'è ben poco da commentare. Complimenti.
Dai, esageratone E poi non sono pochi mesi, sono troppi. Avrei potuto impiegare molto meno tempo.
Queste sono le cose basilari, se non sapessi spiegarle sarebbe grave

Quote:
Quoto e rinnovo i complimenti, ogni tanto leggo anche in questa sezione
Grazie


P.S: rileggendo ogni tanto quel libro, come in questo caso, capisco il perchè di tutte quelle richieste di spiegazioni che facevo: alcune cose per chi non conosce il linguaggio non sono chiare e le dà per scontate, cosi si incappa in dubbi che riguardandoli dopo ti dici: "che stupido".
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 23:35   #17
nuvolare
Member
 
Iscritto dal: Jan 2006
Messaggi: 299
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
P.S: rileggendo ogni tanto quel libro, come in questo caso, capisco il perchè di tutte quelle richieste di spiegazioni che facevo: alcune cose per chi non conosce il linguaggio non sono chiare e le dà per scontate, cosi si incappa in dubbi che riguardandoli dopo ti dici: "che stupido".
Hai pienamente ragione, solo che avvolte riesci a trovare la soluzione da solo, altre volte, hai la risposta sotto il naso e non la vedi e poi e appena capisci il concetto, stupido me lo dico per prima e per il dopo....

Ultima modifica di nuvolare : 01-04-2009 alle 23:37.
nuvolare è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2009, 23:45   #18
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da nuvolare Guarda i messaggi
Hai pienamente ragione, solo che avvolte riesci a trovare la soluzione da solo, altre volte, hai la risposta sotto il naso e non la vedi e poi e appena capisci il concetto, stupido me lo dico per prima e per il dopo....
E' questo il problema di non avere libri fatti come si deve. Ma per iniziare da 0 quello è il migliore.
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2009, 16:58   #19
nuvolare
Member
 
Iscritto dal: Jan 2006
Messaggi: 299
Full, mi dicevi di utilizzare un IDE, non vorrei fare confusione ma sono diversi con IDLE che c'è nella cartella di python?

Nel frattempo continuo con i miei studi e sto facendo il paragrafo 12.5, in cui mi dice di fare:
Codice:
>>> class Rettangolo:
	pass

>>> Rett = Rettangolo()
>>> Rett.Largezza = 100.0

>>> Rett.Altezza = 200.0
>>> Rett.AltoSinistra = Punto()
>>> Rett.AltoSinistra.x = 0.0;
>>> Rett.AltoSinistra.y = 0.0;
>>> def TrovaCentro(Rettangolo):
	P = Punto()
	P.x = Rettangolo.AltoSinistra.x + Rettangolo.Larghezza/2.0
	P.y = Rettangolo.AltoSinistra.y + Rettangolo.Altezza/2.0
	return P

>>> Centro = TrovaCentro(Rett)

Traceback (most recent call last):
  File "<pyshell#49>", line 1, in <module>
    Centro = TrovaCentro(Rett)
  File "<pyshell#48>", line 3, in TrovaCentro
    P.x = Rettangolo.AltoSinistra.x + Rettangolo.Larghezza/2.0
AttributeError: Rettangolo instance has no attribute 'Larghezza'
>>>
Invece dovrebbe proseguire restituendomi 50.0, 100.0 ed invece a me da l'errore appena riportato
Il link è questo http://www.python.it/doc/Howtothink/...-it/chap12.htm la parte dei Rettangoli 12.5

Ultima modifica di nuvolare : 02-04-2009 alle 18:10.
nuvolare è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2009, 18:33   #20
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da nuvolare Guarda i messaggi
Full, mi dicevi di utilizzare un IDE, non vorrei fare confusione ma sono diversi con IDLE che c'è nella cartella di python?

Nel frattempo continuo con i miei studi e sto facendo il paragrafo 12.5, in cui mi dice di fare:
Codice:
>>> class Rettangolo:
	pass

>>> Rett = Rettangolo()
>>> Rett.Largezza = 100.0

>>> Rett.Altezza = 200.0
>>> Rett.AltoSinistra = Punto()
>>> Rett.AltoSinistra.x = 0.0;
>>> Rett.AltoSinistra.y = 0.0;
>>> def TrovaCentro(Rettangolo):
	P = Punto()
	P.x = Rettangolo.AltoSinistra.x + Rettangolo.Larghezza/2.0
	P.y = Rettangolo.AltoSinistra.y + Rettangolo.Altezza/2.0
	return P

>>> Centro = TrovaCentro(Rett)

Traceback (most recent call last):
  File "<pyshell#49>", line 1, in <module>
    Centro = TrovaCentro(Rett)
  File "<pyshell#48>", line 3, in TrovaCentro
    P.x = Rettangolo.AltoSinistra.x + Rettangolo.Larghezza/2.0
AttributeError: Rettangolo instance has no attribute 'Larghezza'
>>>
Invece dovrebbe proseguire restituendomi 50.0, 100.0 ed invece a me da l'errore appena riportato
Il link è questo http://www.python.it/doc/Howtothink/...-it/chap12.htm la parte dei Rettangoli 12.5
Parli dell'IDLE incluso insieme al linguaggio? Anche quello è buono per iniziare, ma ti consiglio di passare direttamente a qualcosa di migliore.

Codice:
>>> Rett.AltoSinistra.x = 0.0;
>>> Rett.AltoSinistra.y = 0.0;
Perchè il punto e virgola?

Comunque ecco il codice, studialo e vedrai dove hai sbagliato:

Codice:
class Rettangolo:
	pass

class Punto:
    pass

Rett = Rettangolo()
Rett.Larghezza = 100
Rett.Altezza = 200

Rett.AltoSinistra = Punto()
Rett.AltoSinistra.x = 0.0
Rett.AltoSinistra.y = 0.0

def TrovaCentro(Rettangolo):
  P = Punto()
  P.x = Rettangolo.AltoSinistra.x + Rettangolo.Larghezza / 2
  P.y = Rettangolo.AltoSinistra.y + Rettangolo.Altezza / 2
  return P

def StampaPunto(Punto):
  print '(' + str(Punto.x) + ', ' + str(Punto.y) + ')'

Centro = TrovaCentro(Rett)
StampaPunto(Centro)
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Il satellite cinese Jilin-1 ha fotografa...
Arrivano i nuovi iPhone ed è subi...
Il chip N1 degli iPhone 17 supporta il W...
La cinese Space Pioneer riesce a eseguir...
Xiaomi copia Apple: arriva la serie 17 e...
A 10 anni dalla prima rilevazione delle ...
Samsung annuncia il rilascio della One U...
La nuova MG4 spopola: già 26.000 ...
Monopattini pericolosi? Secondo una rice...
La Commissione Europea respinge le richi...
The Witcher: ecco le prime immagini dell...
Mitsubishi Electric verso l'acquisizione...
Pasticcio Tesla: nessuno vuole il Cybert...
Qualcomm, il nuovo SoC top di gamma &egr...
La memoria che cambierà l'AI: il ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v