Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
The Edge of Fate è Destiny 2.5. E questo è un problema
The Edge of Fate è Destiny 2.5. E questo è un problema
Bungie riesce a costruire una delle campagne più coinvolgenti della serie e introduce cambiamenti profondi al sistema di gioco, tra nuove stat e tier dell’equipaggiamento. Ma con risorse limitate e scelte discutibili, il vero salto evolutivo resta solo un’occasione mancata
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
AMD ha aggiornato l'offerta di CPU HEDT con i Ryzen Threadripper 9000 basati su architettura Zen 5. In questo articolo vediamo come si comportano i modelli con 64 e 32 core 9980X e 9970X. Venduti allo stesso prezzo dei predecessori e compatibili con il medesimo socket, le nuove proposte si candidano a essere ottimi compagni per chi è in cerca di potenza dei calcolo e tante linee PCI Express per workstation grafiche e destinate all'AI.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-10-2008, 18:01   #61
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Allora non ho capito quello che non hai capito Prova a spiegare meglio che cosa c'è che non dovrebbe andare negli esempi.


Infatti la funzione continua a chiamarsi finche non raggiunge zero. A quel punto ritorna 1 e la chiamata precedete può continuare il calcolo con il valore.
Cioè, quando torna 1 dovrebbe fermarsi la funzione. Non dovrebbe continuare più niente. Che fa si congela l'esecuzione quando arriva a FattorialeMenoUno?

Comunque ora provo a spiegare meglio quello che non capisco riguardo i paragrafi 6.8 e 6.7.

Allora: leggendo più avanti, nel 6.7, si parla più o meno di quello che dico io. Però se la variabile in TabellaMoltiplicazione6x6 è 3 allora deve essere 3 pure in StampaMultipli visto che tutte e due le funzioni partono con lo stesso indice. Altrimenti succederebbe un casino nelle due funzioni perchè ognuna avrebbe una variabile diversa e dovrebbe seguire il suo flusso di esecuzione con il valore corrispondente. Poi il 6.8 che proprio non mi quadra. Non capisco ad esempio perchè StampaMultipli ha due parametri (n, Grandezza) invece di sostituire n con Grandezza e perchè mettendo StampaMultipli (i, i) nella funzione TabellaMoltiplicazioneGenerica stampa i numeri a metà. Oltre a questo nel 6.8 c'è messo: "Quando abbiamo aggiunto il nuovo parametro abbiamo cambiato la prima riga della funzione ed il posto dove la funzione è chiamata in TabellaMoltiplicazioneGenerica".
A me sembra che la funzione venga chiamata nello stesso punto
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2008, 13:53   #62
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Cioè, quando torna 1 dovrebbe fermarsi la funzione. Non dovrebbe continuare più niente. Che fa si congela l'esecuzione quando arriva a FattorialeMenoUno?
Si, quella chiamata alla funzione finisce li e ritorna quel valore e tutte le altre sono ancora ferme in attesa di avere un valore da assegnare a FattorialeMenoUno.

Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Comunque ora provo a spiegare meglio quello che non capisco riguardo i paragrafi 6.8 e 6.7.

Allora: leggendo più avanti, nel 6.7, si parla più o meno di quello che dico io. Però se la variabile in TabellaMoltiplicazione6x6 è 3 allora deve essere 3 pure in StampaMultipli visto che tutte e due le funzioni partono con lo stesso indice. Altrimenti succederebbe un casino nelle due funzioni perchè ognuna avrebbe una variabile diversa e dovrebbe seguire il suo flusso di esecuzione con il valore corrispondente.
Nel capitolo c'è scritto molto chiaramente. NON sono le stessa variabile anche se hanno un nome identico. Dare nomi come "i", "j" ecc è una pessima abitudine perché porta a far confusione ma in questo caso l'autore lo ha fatto di proposito proprio per farti notare questa cosa. Se la funzione TabellaMoltiplicazione6x6 modifica il valore di i questo cambiamento non viene riportato nella i di StampaMultipli.

Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Poi il 6.8 che proprio non mi quadra. Non capisco ad esempio perchè StampaMultipli ha due parametri (n, Grandezza) invece di sostituire n con Grandezza e perchè mettendo StampaMultipli (i, i) nella funzione TabellaMoltiplicazioneGenerica stampa i numeri a metà. Oltre a questo nel 6.8 c'è messo: "Quando abbiamo aggiunto il nuovo parametro abbiamo cambiato la prima riga della funzione ed il posto dove la funzione è chiamata in TabellaMoltiplicazioneGenerica".
A me sembra che la funzione venga chiamata nello stesso punto
StampaMultipli deve sapere due cose per funzionare. Di quale numero deve stampare i vari multipli e questo glielo dici con la variabile n. Dopo di che gli devi anche dire quanti multipli deve stampare di quel numero e per questo c'è la variabile grandezza.

Capire come funziona StampaMultipli(i,i) è un esercizio quindi non ti do aiuti per ora. una volta capito quello che ti vuole spiegare questo capitolo è piuttosto facile capire come funziona e perché da quell'output.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2008, 17:02   #63
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Si, quella chiamata alla funzione finisce li e ritorna quel valore e tutte le altre sono ancora ferme in attesa di avere un valore da assegnare a FattorialeMenoUno.
Sta ancora ancora non mi convince. Se quando viene eseguito Risultato allora? Quando n == 0 la funziona torna indietro ed esegue Risultato con i vari valori passati in precedenza da FattorialeMenoUno?

Quote:
Nel capitolo c'è scritto molto chiaramente. NON sono le stessa variabile anche se hanno un nome identico. Dare nomi come "i", "j" ecc è una pessima abitudine perché porta a far confusione ma in questo caso l'autore lo ha fatto di proposito proprio per farti notare questa cosa. Se la funzione TabellaMoltiplicazione6x6 modifica il valore di i questo cambiamento non viene riportato nella i di StampaMultipli.
Si si, questo lo so. Lo avevo capito, ma è proprio questo il punto. Se non sono la stessa variabile sono ognuno per i conti propri? E quando ad esempio io metto 10 in StampaMultipli e 6 in TabellaMoltiplicazione, in quest'ultima quando si arriva a 6 la funzione dovrebbe terminare, come è possibile che StampaMultipli viene chiamata ancora? Inoltre, le tabulazioni in base a come modifico i valori vengono diverse.
P.S: ma dopo '\t' si deve mettere la virgola? Perchè io ho provato in un esercizio a scriverlo senza virgola e funziona, ma in un altro esempio no e la tabulazione non viene


Quote:
StampaMultipli deve sapere due cose per funzionare. Di quale numero deve stampare i vari multipli e questo glielo dici con la variabile n. Dopo di che gli devi anche dire quanti multipli deve stampare di quel numero e per questo c'è la variabile grandezza.
E TabellaMoltiplicazione non ha bisogno di tutte e due valori pure? Perchè ha solo Grandezza?

Quote:
Capire come funziona StampaMultipli(i,i) è un esercizio quindi non ti do aiuti per ora. una volta capito quello che ti vuole spiegare questo capitolo è piuttosto facile capire come funziona e perché da quell'output
Il punto è che il capitolo l'ho capito, sono questi paragrafi che mi stanno facendo perdere un sacco di tempo. Sarò io scemo perchè non credo che nessun'altro che abbia letto o leggesse questo libro avrebbe dubbi ai primi capitoli, i più facili, ma a me queste cose non mi quadrano. Sarò proprio io scemo. Non posso nemmeno andare avanti a studiare accidenti
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2008, 17:26   #64
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Sta ancora ancora non mi convince. Se quando viene eseguito Risultato allora? Quando n == 0 la funziona torna indietro ed esegue Risultato con i vari valori passati in precedenza da FattorialeMenoUno?
Sì, t'avevo spiegato prima l'esecuzione di funzioni ricorsive. Le chiamate vengono "congelate", e non appena la prima ritorna, a catena si torna indietro fino all'uscita dalla funzione col valore calcolato man mano.

Basta ripercorrere questi passi con carta e penna per capire come funziona il meccanismo.
Quote:
Si si, questo lo so. Lo avevo capito, ma è proprio questo il punto. Se non sono la stessa variabile sono ognuno per i conti propri? E quando ad esempio io metto 10 in StampaMultipli e 6 in TabellaMoltiplicazione, in quest'ultima quando si arriva a 6 la funzione dovrebbe terminare, come è possibile che StampaMultipli viene chiamata ancora?
Il concetto è che quando assegni un valore a una variabile dentro una funzione, Python ne crea una nuova e usa quella. Che, però, "vive" soltanto all'interno della funzione. Quando si esce da essa si "perde", e non è più visibile da nessuan parte.

Quindi se due funzioni assegna un valore alla variabile "i", ciascuna di esse avrà creato una propria variabile (detta "locale") con questo nome, ma che al di fuori sarà completamente invisibile.

Ovviamente anche i parametri delle funzioni sono variabili locali, quindi "private" e non accessibili dall'esterno.
Quote:
Inoltre, le tabulazioni in base a come modifico i valori vengono diverse.
P.S: ma dopo '\t' si deve mettere la virgola? Perchè io ho provato in un esercizio a scriverlo senza virgola e funziona, ma in un altro esempio no e la tabulazione non viene
Se metti il \t dentro una stringa, funziona da tabulatore, appunto. Non servono virgole, perché dentro una stringa vengono intese come caratteri e stampate a video assieme al resto.
Quote:
E TabellaMoltiplicazione non ha bisogno di tutte e due valori pure? Perchè ha solo Grandezza?
Perché per lavorare le basta quella.
Quote:
Il punto è che il capitolo l'ho capito, sono questi paragrafi che mi stanno facendo perdere un sacco di tempo. Sarò io scemo perchè non credo che nessun'altro che abbia letto o leggesse questo libro avrebbe dubbi ai primi capitoli, i più facili, ma a me queste cose non mi quadrano. Sarò proprio io scemo. Non posso nemmeno andare avanti a studiare accidenti
Prova a simulare il funzionamento con carta e penna, come ti dicevo io: magari se vedi passo passo l'evolversi dell'esecuzione, capisci meglio i meccanismi che ci stanno dietro.
__________________
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 19-10-2008, 19:32   #65
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Sì, t'avevo spiegato prima l'esecuzione di funzioni ricorsive. Le chiamate vengono "congelate", e non appena la prima ritorna, a catena si torna indietro fino all'uscita dalla funzione col valore calcolato man mano.

Basta ripercorrere questi passi con carta e penna per capire come funziona il meccanismo.
Pensavo era riferito solo alla funzione ContoAllaRovescia e non alle funzioni ricorsive in generale, anche perchè il codice di Fattoriale era diverso e dopo la chiamata ricorsiva c'erano altre operazioni. Io ho provato a simularlo in attesa di rendere operativo SPE, forse però sbaglio. Tu come lo simuleresti con carta e penna?

Quote:
Il concetto è che quando assegni un valore a una variabile dentro una funzione, Python ne crea una nuova e usa quella. Che, però, "vive" soltanto all'interno della funzione. Quando si esce da essa si "perde", e non è più visibile da nessuan parte.

Quindi se due funzioni assegna un valore alla variabile "i", ciascuna di esse avrà creato una propria variabile (detta "locale") con questo nome, ma che al di fuori sarà completamente invisibile.Ovviamente anche i parametri delle funzioni sono variabili locali, quindi "private" e non accessibili dall'esterno.
Questo l'ho capito, non è questo il problema però. Non so come spiegarmi. Cioè le variabili sono diverse, e ci siamo, me il punto è che dato che sono diverse come fa a funzionare il programma sempre? Mi spiego meglio, Se in Tabella6x6 metto come condizione del while il <=6, quando i raggiunge questo valore allora Tabella6x6 dovrebbe finire giusto? Di conseguenza non dovrebbe essere chiamata nemmeno StampaMultipli perchè veniva chiama dentro Tabella6x6 che però è finita. Capito che voglio dire?

Quote:
Se metti il \t dentro una stringa, funziona da tabulatore, appunto. Non servono virgole, perché dentro una stringa vengono intese come caratteri e stampate a video assieme al resto.
In che senso dentro una stringa scusa? Negli esempi del libro non è dentro le stringhe il '\t, inoltre come ho scritto quando nel codice di StampaMultipli (mi sembra), togliendo la virogla dopo il carattere di tabulazione la griglia non veniva stampata, ma i caratteri erano incolonnati

Quote:
Perché per lavorare le basta quella.
Non capisco perchè. Comunque ancora non c'ho potuto ragionare visto che sto cercando di fare funzionare SPE, ci ragionerò su il più presto possibile spero perchè voglio andare avanti

Quote:
Prova a simulare il funzionamento con carta e penna, come ti dicevo io: magari se vedi passo passo l'evolversi dell'esecuzione, capisci meglio i meccanismi che ci stanno dietro.
Leggi sopra
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2008, 19:53   #66
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Pensavo era riferito solo alla funzione ContoAllaRovescia e non alle funzioni ricorsive in generale, anche perchè il codice di Fattoriale era diverso e dopo la chiamata ricorsiva c'erano altre operazioni. Io ho provato a simularlo in attesa di rendere operativo SPE, forse però sbaglio. Tu come lo simuleresti con carta e penna?
Disegnando una tabella mettendo nella prima colonna un numero che rappresenta il numero di chiamate effettuate alla funzione, nelle altre colonne i valori delle variabili, e un'ultima colonna col valore eventualmente tornato.
Quote:
Questo l'ho capito, non è questo il problema però. Non so come spiegarmi. Cioè le variabili sono diverse, e ci siamo, me il punto è che dato che sono diverse come fa a funzionare il programma sempre? Mi spiego meglio, Se in Tabella6x6 metto come condizione del while il <=6, quando i raggiunge questo valore allora Tabella6x6 dovrebbe finire giusto? Di conseguenza non dovrebbe essere chiamata nemmeno StampaMultipli perchè veniva chiama dentro Tabella6x6 che però è finita. Capito che voglio dire?
Sì, ma qual è il tuo problema? Non capisco bene. Spiegati meglio, per favore.
Quote:
In che senso dentro una stringa scusa? Negli esempi del libro non è dentro le stringhe il '\t, inoltre come ho scritto quando nel codice di StampaMultipli (mi sembra), togliendo la virogla dopo il carattere di tabulazione la griglia non veniva stampata, ma i caratteri erano incolonnati
Adesso ho capito. Allora, intanto '\t' è una stringa. Poi la virgola alla fine di print significa che Python deve andare a capo con la stampa.
Quote:
Non capisco perchè. Comunque ancora non c'ho potuto ragionare visto che sto cercando di fare funzionare SPE, ci ragionerò su il più presto possibile spero perchè voglio andare avanti
Quando avrai SPE col debugger funzionante potrai eseguire passo passo il programma e vedrai che capirai tutto. Anche meglio che con carta e penna.
__________________
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 19-10-2008, 22:33   #67
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Disegnando una tabella mettendo nella prima colonna un numero che rappresenta il numero di chiamate effettuate alla funzione, nelle altre colonne i valori delle variabili, e un'ultima colonna col valore eventualmente tornato.
Ho provato, ma ci sono dei punti dove mi si blocca l'esecuzione. Se non chiedo troppo potresti farmi vedere come la faresti tu questa simulazione?
Quote:
Sì, ma qual è il tuo problema? Non capisco bene. Spiegati meglio, per favore.
Ci provo a spiegarmi meglio che posso. Allora, partiamo dal presupposto che nella funzione StampaMultipli abbiamo come condizione while i <=10 e che in Tabella6x6 abbiamo come condizione while i <=6. Bene, allora. StampaMultipli viene chiamata da Tabella giusto? Perfetto. Teniamo in conto che le due variabili i non sono la stessa variabile, ma partono tutte e due con lo stesso indice, cioè 1. Quando la variabile i di Tabella6x6 arriva a 6, la funzione dovrebbe terminare e di conseguenza StampaMultipli non dovrebbe essere più chiamato giusto? Ecco il punto, perchè allora quando i=6 StampaMultipli viene chiamato ed eseguito ancora?
Quote:
Adesso ho capito. Allora, intanto '\t' è una stringa. Poi la virgola alla fine di print significa che Python deve andare a capo con la stampa.
No, non hai capito. La virgola alla fine del print so cosa significa, e so anche che '\t' è una stringa e che \ è il carattere di escape per renderla invisibile. Quello che non mi è chiaro è perchè negli esempi, ad esempio la funzione StampaMultipli nel paragrafo 6.5, il carattere di tabulazione ha la virgola finale. Io l'esercizietto del 6.3 l'ho fatto senza mettere la virgola alla fine di '\t', però in StampaMultipli se tolgo la virgola finale la griglia non viene più stampata e i multipli sono stampati a gruppi in colonna, in verticale in pratica. Capito che voglio dire?

Quote:
Quando avrai SPE col debugger funzionante potrai eseguire passo passo il programma e vedrai che capirai tutto. Anche meglio che con carta e penna.
Apparte che vorrei pure imparare a simularlo a mano, perchè ad esempio in ufficio non ho sempre la possibilità di usare il pc, e poi non voglio perdere ancora tempo. Voglio andare avanti. Che rabbia...
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.

Ultima modifica di ~FullSyst3m~ : 20-10-2008 alle 14:55.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2008, 18:00   #68
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Finalmente ho avuto 10 minuti di tranquillità per poter analizzare il codice di StampaMultipli e TabellaMoltiplicazioneGenerica e sia a mente sia simulando il programma con carta e penna ho capito come funziona! Come ho fatto a non capirlo prima, avevo l'esecuzione del programma sotto gli occhi in pratica! Che scemo Adesso mi manca solo di svolgere l'ultimo esercizietto del capitolo e posso passare avanti finalmente! . Solo una cosa, per chiarezza: il parametro Grandezza della funzione TabellaMoltiplicazioneGenerica viene passato al parametro Grandezza della funzione StampaMultipli? In pratica, sono lo stesso parametro?

Restano però valida dopo altri test questa perplessità:

Quote:
No, non hai capito. La virgola alla fine del print so cosa significa, e so anche che '\t' è una stringa e che \ è il carattere di escape per renderla invisibile. Quello che non mi è chiaro è perchè negli esempi, ad esempio la funzione StampaMultipli nel paragrafo 6.5, il carattere di tabulazione ha la virgola finale. Io l'esercizietto del 6.3 l'ho fatto senza mettere la virgola alla fine di '\t', però in StampaMultipli se tolgo la virgola finale la griglia non viene più stampata e i multipli sono stampati a gruppi in colonna, in verticale in pratica. Capito che voglio dire?
In pratica, in StampaMultipli, dopo il print n*i, '\t', se tolgo la virgola dopo il carattere di tabulazione i caratteri mi vengono stampati cosi:

Codice:
1
2
3
4
5
6
7

2
4
6
8
10
12
14
nonostante ci sia il carattere di tabulazione, invece se metto la virgola dopo il carattere di tabulazione mi stampa la griglia correttamente.

Ho notato appena adesso una cosa, smanettando con il codice per capire il perchè delle stampe incolonnate, per sbaglio ho modificato la linea di codice
i = i+1 cosi i = i+1, e il print n*1, sopra sempre con la virgola finale e il risultato è questo:

Codice:
1
2
3
4
5
6
7
poi al print n*i, ho aggiunto '\t' e mi si visualizza questo:

Codice:
1

2

3

4

5

6

7
mettendo invece la virgola finale al carattere di tabulazione mi stampa di nuovo i numeri come prima:

Quote:
1
2
3
4
5
6
7
Come mai? Ora comunque ci ragiono perchè vorrei proprio capire come interpreta il codice Python

Comunque in SPE ho notato che la griglia sia con il carattere di tabulazione sia senza viene stampata allo stesso modo, infatti ho dovuto provare il codice pure sull'IDLE perchè questa cosa non mi convinceva
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.

Ultima modifica di ~FullSyst3m~ : 20-10-2008 alle 19:33.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2008, 10:50   #69
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
L'ultimo esercizietto del capitolo 6 l'ho capito pure!! Le altre cose restano valide però eh!
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2008, 11:19   #70
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Aggiungo una piccola cosa, esercizietto paragrafo 7.3:

"Scrivi una funzione che prende una stringa come argomento e la stampa un caratter per riga partendo dall'ultimo carattere."

Finora ho scritto questo codice:

Codice:
def StringaAlContrario():
    Stringa = raw_input ("Inserisci una parola: ")
    Indice = 0
    while Indice < len (Stringa):
        Lunghezza = len (Stringa)
        Lettera = Stringa[-1]
        print Lettera
        Indice = Indice + 1
ma ovviamente mi restituisce sempre l'ultimo carattere. Se ad esempio come stringa inserisco la parola cab Python mi restituisce:
Codice:
b
b
b
ho anche notato però che se modifico il codice in questo modo:
Codice:
def StringaAlContrario():
    Stringa = raw_input ("Inserisci una parola: ")
    Indice = 0
    while Indice < len (Stringa):
        Lunghezza = len (Stringa)
        Lettera = Stringa[-1]
        print Lettera
        Indice = Indice + 1
        Stringa = Stringa[-1]
non mi stampa tre volte la b, ma una volta sola
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2008, 11:37   #71
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
"Scrivi una funzione che prende una stringa come argomento e la stampa un caratter per riga partendo dall'ultimo carattere."
Attento, che la tua funzione la riceve in input dalla tastiera, e non come argomento...
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Codice:
def StringaAlContrario():
    Stringa = raw_input ("Inserisci una parola: ")
    Indice = 0
    while Indice < len (Stringa):
        Lunghezza = len (Stringa)
        Lettera = Stringa[-1]
        print Lettera
        Indice = Indice + 1
Stai stampando len(Stringa) volte l'ultimo carattere della stringa (Stringa[-1]), per forza.
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Codice:
def StringaAlContrario():
    Stringa = raw_input ("Inserisci una parola: ")
    Indice = 0
    while Indice < len (Stringa):
        Lunghezza = len (Stringa)
        Lettera = Stringa[-1]
        print Lettera
        Indice = Indice + 1
        Stringa = Stringa[-1]
non mi stampa tre volte la b, ma una volta sola
Sì, perché alla fine della prima iterazione "tagli" la stringa assegnandole solo l'ultimo carattere (nel tuo caso, b).

Io ti consiglio di prendere il primo codice e ragionare sugli indici: hai una stringa di una certa lunghezza n, dove l'ultimo carattere è in posizione n-1. Dovendo stampare al contrario, devi andare da n-1 a 0: se vuoi usare un indice che viene incrementato volta per volta, puoi pensare di sottrarlo mentre lui cresce, in modo da far decrescere l'indice del carattere a cui accedi:
Codice:
void reverse_print(stringa):
    n = len(stringa)
    indice = 1
    while indice <= n:
        print stringa[n - indice],
        indice += 1
O anche farlo con range()/xrange():
Codice:
void reverse_print(stringa):
    n = len(stringa)
    for indice in xrange(1, n+1):
        print stringa[n - indice],
Altrimenti puoi sfruttare il fatto che con gli indici negativi puoi indirizzare posizioni relative alla fine della stringa, in Python, e togliere di mezzo la n dal codice prima:
Codice:
void reverse_print(stringa):
    n = len(stringa)
    for indice in xrange(1, n+1):
        print stringa[-indice],
Dovrebbe funzionare lo stesso.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 21-10-2008 alle 11:41.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2008, 12:02   #72
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
[...]
Codice:
void reverse_print(stringa):
    n = len(stringa)
    for indice in xrange(1, n+1):
        print stringa[-indice],
Dovrebbe funzionare lo stesso.
Non dovresti risolvergli gli esercizi altrimenti non impara mai. Qualche piccolo suggerimento sulla riga in cui c'era l'errore sarebbe bastato.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2008, 12:07   #73
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Non dovresti risolvergli gli esercizi altrimenti non impara mai. Qualche piccolo suggerimento sulla riga in cui c'era l'errore sarebbe bastato.
Infatti non risolvo quasi mai gli esercizi, e quando lo faccio non è quasi mai per intero... in questo caso ho voluto farlo, per fargli vedere un esempio pratico e chiarirgli del tutto le idee. Mi rendo conto anche che per lui che sta imparando trovare solo i problemi senza avere soluzioni a cui confrontarsi magari è difficile.

Il resto chiaramente deve farselo lui, anche perché, pur volendo, non avrei il tempo di mettermi qui a risolvere esercizi.

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 21-10-2008 alle 12:11.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2008, 13:10   #74
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Attento, che la tua funzione la riceve in input dalla tastiera, e non come argomento...

Stai stampando len(Stringa) volte l'ultimo carattere della stringa (Stringa[-1]), per forza.

Sì, perché alla fine della prima iterazione "tagli" la stringa assegnandole solo l'ultimo carattere (nel tuo caso, b).

Io ti consiglio di prendere il primo codice e ragionare sugli indici: hai una stringa di una certa lunghezza n, dove l'ultimo carattere è in posizione n-1. Dovendo stampare al contrario, devi andare da n-1 a 0: se vuoi usare un indice che viene incrementato volta per volta, puoi pensare di sottrarlo mentre lui cresce, in modo da far decrescere l'indice del carattere a cui accedi:
Codice:
void reverse_print(stringa):
    n = len(stringa)
    indice = 1
    while indice <= n:
        print stringa[n - indice],
        indice += 1
O anche farlo con range()/xrange():
Codice:
void reverse_print(stringa):
    n = len(stringa)
    for indice in xrange(1, n+1):
        print stringa[n - indice],
Altrimenti puoi sfruttare il fatto che con gli indici negativi puoi indirizzare posizioni relative alla fine della stringa, in Python, e togliere di mezzo la n dal codice prima:
Codice:
void reverse_print(stringa):
    n = len(stringa)
    for indice in xrange(1, n+1):
        print stringa[-indice],
Dovrebbe funzionare lo stesso.
L'input da tastiera l'ho voluto fare io cosi. Non cambia nulla se la stringa la metto come argomento o la prendo dalla tastiera.

Comunque io ho scritto cosi, per vedere un pò le vostre idee, come ha detto VICIUS la soluzione la devo trovare solo, altrimenti non imparo e non acuisisco la giusta mentalità. Infatti quando torno in ufficio con calma ci ragiono. Era solo per rendervi partecipi, tutto qua
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.

Ultima modifica di ~FullSyst3m~ : 21-10-2008 alle 16:47.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2008, 17:54   #75
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Esercizio risolto!
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2008, 11:12   #76
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Paragrafo 7.3. C'è un esercizio. Il codice è questo:

Codice:
Prefissi = "JKLMNOPQ"
Suffisso = "ack"

for Lettera in Prefissi:
    print Lettera + Suffisso
l'esercizio consiste nel modificare il programma in modo che la parola Oack venga stampata Ouack e Qack venga stampata Quack. Io ho provato a scriverlo cosi:

Codice:
Prefissi = "JKLMNOPQ"
Suffisso = "ack"
Suffisso2 = "uack"

for Lettera in Prefissi:
    if Lettera == "O" and Lettera == "Q":
        print Lettera + Suffisso2
    else:
        print Lettera + Suffisso
ma non va. Per caso dopo un for non si può inserire una condizione?
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2008, 11:51   #77
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Codice:
Prefissi = "JKLMNOPQ"
Suffisso = "ack"
Suffisso2 = "uack"
Sicuro che questo Suffisso2 serve? Non è possibile stampare la u in qualche altro modo?

Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Codice:
for Lettera in Prefissi:
    if Lettera == "O" and Lettera == "Q":
L'errore è qui. Prova ad elencare tutti i casi per cui questa condizione è vera e quelli per cui è false.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2008, 11:51   #78
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Per caso dopo un for non si può inserire una condizione?
No, certo che puoi farlo!
Rileggi bene la condizione che hai impostato e cerca di capire cosa significa logicamente... (così faccio contento anche VICIUS).
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2008, 12:32   #79
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Sicuro che questo Suffisso2 serve? Non è possibile stampare la u in qualche altro modo?


L'errore è qui. Prova ad elencare tutti i casi per cui questa condizione è vera e quelli per cui è false.
Si certo, Suffisso2 potrei toglierlo e stampare la u in questo modo:

Codice:
print Lettera + "u" + Suffisso
ma dato che mi piace capire le cose vorrei capire perchè in quel modo non va...

Azzo... ho sbagliato l'operatore logico, che fdm!

Quote:
No, certo che puoi farlo!
Eh infatti, mi sembrava proprio strano che non si poteva. Avrebbe voluto dire che era menomato il linguaggio eh!
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.

Ultima modifica di ~FullSyst3m~ : 22-10-2008 alle 12:38.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2008, 17:24   #80
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
Codice:
Prefissi = "JKLMNOPQ"
Suffisso = "ack"

for Lettera in Prefissi:
    if Lettera =='O':
        print Lettera +'u'+ Suffisso
    elif Lettera =='Q':
        print Lettera +'u'+ Suffisso
    else: 
        print Lettera + Suffisso
__________________
------------------------------------------------------------------------------------------------------------
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
------------------------------------------------------------------------------------------------------------
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale Acer TravelMate P4 14: tanta sostanza per l'uten...
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque Hisense M2 Pro: dove lo metti, sta. Mini proiett...
SpaceX Starship: Ship 37 ha eseguito due...
Sharkoon punta sui case a basso costo, m...
La tua rete Wi-Fi fa pena? Questi FRITZ!...
Amazon, un weekend di fuoco per gli scon...
Ancora 3 smartwatch Amazfit in forte sco...
Sharkoon A60 RGB: dissipatore ad aria du...
HONOR 400 Pro a prezzo bomba su Amazon: ...
Offerte da non perdere: robot aspirapolv...
Apple Watch e Galaxy Watch ai minimi sto...
Il rover NASA Perseverance ha ''raccolto...
NASA e ISRO hanno lanciato il satellite ...
Switch 2 ha venduto 5,82 milioni di cons...
Assassin's Creed Black Flag Remake: le m...
Cosa ci fa una Xiaomi SU7 Ultra alle por...
Promo AliExpress Choice Day: prezzi stra...
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: 22:51.


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