|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | ||
|
Bannato
Iscritto dal: May 2008
Messaggi: 275
|
[python] pensare da informatico: chiarimenti capitolo 4
ci sono alcune cose in questo capitolo che non capisco e che vorrei sapere, eccole:
1)esercizio 4.6, http://www.python.it/doc/Howtothink/...-it/chap04.htm Codice:
def Confronta (x, y):
if x > y:
print x, "è maggiore di", y
elif x < y:
print x, "è minore di", y
else:
print x, "e", y, "sono uguali"
Confronta (2, 5)
def ElaboraScelta (scelta):
if scelta == "prova":
print "scelta esatta"
elif scelta == "prova2":
print "scelta giusta"
else:
print "scelta errata"
ElaboraScelta ("prova")
2) e oltre a quello che è scritto nel messaggio sopra a questo, vorrei spiegata questa parte che si trova nel paragrafo 4.9 sempre del link di prima: Quote:
3)4.12, inserimento da tastiera: Quote:
grazie a chi mi toglierà questi dubbi |
||
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
Il primo mi sembra giusto,la ricorsione te l'ha spiegata Daniele nell'altro tuo post e il terzo passo perchè non conosco python
__________________
Khelidan |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Forse ti ha spiazzato la scritta \linebreak. Credo che quello molto probabilmente sia un errore di battitura o di impostazione della pagina, leggilo senza quello e ti sarà più chiaro il senso della frase
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
|
|
|
|
#4 | |
|
Bannato
Iscritto dal: May 2008
Messaggi: 275
|
Quote:
ho anche letto la frase senza quel \linebreak, però non capisco come dovrei mettere una funzione che converte il tipo dopo che l'utente inserisce l'input visto che esempi non ce ne sono |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Be' non sono stato molto chiaro in effetti. Rispiego.
Dando per assunto che tu sappia il concetto basilare di "funzione", procediamo. Hai una funzione main() da cui prende inizio il tuo programma; da lì dentro chiami una funzione: il controllo viene passato a lei, fa un certo numero di operazioni, poi esce, facendo ritorno alla main(). Semplice, no? Ora, prendiamo un caso più complicato: dalla main() chiami una funzione1(), che al suo interno chiama funzione2(). Cosa succede? Semplice: main() chiama funzione1(), aspettando che finisca. Nel frattempo, anche funzione1() chiama funzione2() e aspetta che finisca. Quando vengono eseguite tutte e funzione2() termina, restituisce il controllo alla funzione che l'ha chiamata: nel nostro caso si tratta di funzione1(), che riprenderà ad essere eseguita. Quando anche lei finirà, non ci sarà altro da fare che tornare alla main(). La ricorsione funziona più o meno nella stessa maniera; nessuno ti vieta di fare in modo che una funzione chiami se stessa: sarà semplicemente un'istanza di una certa funzione che chiama un'altra particolare funzione. Facciamo l'esempio classico (te lo scrivo in C, perché il Python non lo conosco, ma il concetto è identico): Codice:
int fattoriale(int n)
{
if (n <= 1) return 1;
return (n * fattoriale(n - 1));
}
A questo punto deve essere eseguita la seconda chiamata a fattoriale(), ricevendo n = 2 come parametro; questo è ancora maggiore di 1, quindi verrà effettuata una terza chiamata a fattoriale(), dandole un parametro ancora decrementato. Terza esecuzione: fattoriale() riceve n = 1, che è la condizione che soddisfa il caso base, quello che leggi nel blocco if: finalmente una cosa facile - dobbiamo solo uscire dalla funzione, restituendo 1. La terza invocazione è terminata, ora, e il controllo viene restituito alla seconda invocazione, che aveva n = 2 come parametro ed ha ricevuto 1 come risultato dalla chiamata di fattoriale(): ormai non dovrà fare altro che moltiplicare 2 * 1 ed uscire dando tale valore come risultato. Il controllo viene restituito alla prima invocazione di funzione(), quella con n = 3, che adesso ha ricevuto 2 dalla seconda invocazione di funzione(), e dovrà solo restituire il valore 3 * 2 come suo risultato. Dopo tutta questa serie di chiamate "annidate" alla stessa funzione, l'esecuzione torna alla main(), che potrà usare il valore del fattoriale di 3 come meglio le pare e piace. In pratica, lo schema è: main() > fattoriale(3) = 3 * fattoriale(2) = 3 * (2 * fattoriale(1)) = 3 * (2 * 1) ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! Ultima modifica di DanieleC88 : 12-06-2008 alle 12:33. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Lo so che non sono stato molto chiaro lo stesso, ma non potendoti fare "vedere" con un disegno quello che succede sullo stack, mi viene difficile farti capire.
Puoi pensare che ad ogni chiamata si stia aggiungendo un anello di una catena, dove ognuno aspetta il prossimo, finché l'ultimo non interrompe questa catena.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#7 | |
|
Bannato
Iscritto dal: May 2008
Messaggi: 275
|
Quote:
|
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
La prima preleva dalla "tastiera" una stringa e la valuta come se fosse un'espressione con la sintassi di Python, e te ne restituisce il risultato. La seconda semplicemente preleva dalla "tastiera" una stringa e te la restituisce così com'è. Esempi pratici: Codice:
>>> x = input("Dammi un'espressione: ")
Dammi un'espressione: 1 + 2
>>> x
3
>>> y = raw_input("Dammi una stringa: ")
Dammi una stringa: 1 + 2
>>> y
'1 + 2'
Con raw_input(), invece, ha preso la stringa e l'ha semplicemente restituita. A causa di queste incomprensioni, con Python 3.0 input() sparirà e raw_input() verrà rinominata input(). Sugli altri punti vedo che ti hanno già risposto.
__________________
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 |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
Comunque dallla 3.0 allora sia per stringhe che per numeri basterà usare solo la funzione input()?
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Alleluia!
Quote:
), concentrandomi sul primo linguaggio che mi sono trovato davanti, ovvero il BASIC. Che ho trovato per caso, oltretutto. Visto che mi ci divertivo ho deciso poco dopo di passare al Visual Basic e fare un po' di programmini per divertimento; dopo un po' sono passato al Delphi, e in seguito ho provato anche C e al C++. Se sei agli inizi pensa a studiare con Python, hai tutto il tempo del mondo per imparare linguaggi di quarant'anni fa...
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#11 | |
|
Bannato
Iscritto dal: May 2008
Messaggi: 275
|
Quote:
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non ricordo, ne avrò avuti 13, forse. Ma che importa? Ognuno inizia quando gli pare, pensa solo a scrivere programmi e vai tranquillo.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: May 2008
Messaggi: 275
|
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Guarda, non sono ancora 7 anni, e comunque ho passato molto tempo pensando solo a divertirmi con gli strumenti che avevo, non ho passato tutto questo tempo a "studiare" sistematicamente. Con un po' di impegno e buona volonta si raggiunge il "mio livello" in molto meno tempo.
ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#15 | |
|
Bannato
Iscritto dal: May 2008
Messaggi: 275
|
Quote:
gli strumenti che avevi?cioè?gli strumenti si possono prendere |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Gli strumenti che avevo intendo il linguaggio e/o l'IDE che usavo. All'epoca ho smanettato per diverso tempo con Visual Basic, che è simpatico per chi inizia, perché il linguaggio è molto semplice (ma poco versatile, dovessi reiniziare adesso sceglierei anch'io Python) e ti fa fare anche applicazioni grafiche con poco sforzo: quindi il principiante vede subito dei risultati, e non si demoralizza. Se fossi partito dal C, probabilmente a quest'ora non sarei qua a risponderti su queste cose.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#17 | |
|
Bannato
Iscritto dal: May 2008
Messaggi: 275
|
Quote:
comunque per questo volevo iniziare con vb, perchè ho visto persone che in pochissimo tempo hanno fatto dei programmi abbastanza complessi, con python prima di vedere risultati concreti chissà quanto deve passare |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Sì, è facile (è un linguaggio pensato per i principianti, BASIC significa Beginner's All-purpose Symbolic Instruction Code), ma la cosa caratteristica del Visual Basic è il fatto di essere fortemente integrato con un designer di interfacce, così anche il principiante può fare subito una finestra con dei pulsantini invece che vedere dei caratteri scritti su una console.
Come linguaggio però ci perde un po'. Ci sono delle cose che possono essere confusionarie, come Option Base con cui puoi specificare se far partire gli indici delle array da 0 o da 1 (immagina se sei abituato a partire da zero e leggi codice scritto da chi parte da 1... Non conosco Visual Basic .NET, quindi su quello non mi posso pronunciare. Sta di fatto che come linguaggio credo che non ci sia confronto con Python: basta appoggiarsi ai giusti strumenti anche qui (un buon IDE e una libreria grafica appropriata) per vedere risultati convincenti in poco tempo, quindi direi di iniziare direttamente da un linguaggio "serio".
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#19 |
|
Bannato
Iscritto dal: May 2008
Messaggi: 275
|
in definitiva sto vb è buono o no? e che significa fare partire gli indici degli array da 0 o 1? ma scusami comunque, tutte queste cose come le sai?
mentre vi espongo un piccolo problemino: capitolo 5, paragrafo 5.2, esercizietto del 5.2: Codice:
def Confronto (x, y):
a = 0
b = 1
c = -1
if x > y:
return b
if x == y:
return a
elif x < y:
return c
Confronto (5, 6)
Codice:
a = 0
b = 1
c = -1
def Confronto (x, y):
if x > y:
return b
if x == y:
return a
elif x < y:
return c
Confronto (5, 6)
ho anche provato a far eseguire gli esempi del capitolo, ma non mi ritorna nemmeno niente. come mai? il link qua http://www.python.it/doc/Howtothink/...-it/chap05.htm |
|
|
|
|
|
#20 |
|
Bannato
Iscritto dal: May 2008
Messaggi: 275
|
inserendo questo codice di esempio nella command line mi restituisce il valore, ma sempre positivo, anche se metto ad esempio ValoreAssoluto (-1)
Codice:
def ValoreAssoluto(x):
if x < 0:
return -x
elif x > 0:
return x
come mai? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:41.












), concentrandomi sul primo linguaggio che mi sono trovato davanti, ovvero il BASIC. Che ho trovato per caso, oltretutto.








