Forum >> Principianti >> Problema con esercizio al capitolo 7

Pagina: 1

Prima di tutto ciao a tutti :) Ho iniziato a studiare python da qualche giorno, mi sono bloccato su un esercizio proposto dalla guida "Pensare da informatico".
Indice = 0 
while Indice < len(Frutto): 
  Lettera = FruttoIndice 
  print Lettera 
  Indice = Indice + 1 
Questo è il codice base, dispone le singole lettere della stringa una riga per volta. Fin qui nessun problema. Successivamente viene proposto un esercizio, cioè di creare una funzione che prenda come argomento una stringa e far si che la disponga dall'ultima alla prima lettera, una riga per volta. Non sono riuscito a farlo per quanto ci abbia provato, immagino di aver compreso male qualcosa o di non averla compresa proprio. Così ho cercato qualche codice funzionante su internet per analizzarlo, questo è ciò che ho trovato:

def Function1(stringa):
    i = -1
    c = 0
    while c < len(stringa):
        lettera = stringa
        print lettera
        i = i - 1
        c = c + 1



Ora provo ad analizzare la stringa ma mi sfugge la parte finale.

- Crea 2 variabili locali "i" e "c"

- Dice alla funzione che finché "c" è inferiore al numero dei caratteri di "stringa" deve stampare la variabile "lettera"

- Assegna alla variabile "lettera" l'ultimo carattere di "stringa" grazie a "i"

Fin qui penso di non aver detto stupidaggini, ma se l'ho fatto fatemelo capire perché non ci arrivo.




Fatto questo, sempre all'interno di "while", dice che "i" deve sempre retrocedere di un carattere grazie a quel "i = i - 1". Questo lo trovo sensato perché partendo da -1, che corrisponde all'ultimo carattere, deve arrivare fino al primo carattere. Nel caso di una stringa come "Computer" dovrebbe quindi arrivare fino a un -8 che sarebbe la "C".

Nella mia mente però la funzione sarebbe già completa così, non riesco proprio a capire l'ultima riga di codice. a che serve quel "c+1"?
Evidentemente mi sfugge proprio la logica generale, qualcuno potrebbe illuminarmi?




Grazie in anticipo e scusate se ho detto troppe cavolate :thinking:


--- Ultima modifica di Dgsol in data 2016-04-03 22:52:46 ---
Anche se sono passati un po di giorni dalla tua richiesta e con ogni probabilità hai già trovato la risposta che cercavi, voglio rispondere.
non riesco proprio a capire l'ultima riga di codice. a che serve quel "c+1"?
Non ti sembra che questa parte di codice eccetto quella in rosso:
    while c < len(stringa):
        lettera = stringa
        print lettera
        i = i - 1
        c = c + 1
sia pressochè uguale a quella che hai postato dell'esercizio precedente?

Quindi c = c + 1 non fà altro che aggiornare l'indice per il confronto sul while della lunghezza della stringa,
ora visto che ti viene chiesto che la stringa deve essere ritornata dall'ultima posizione alla prima, cioè al contrario, i = i - 1 dovrebbe servirti proprio a restituirti la stringa al contrario riga per riga, ovviamente questo non basta, infatti sul codice forse manca una piccola parte sulla riga:
print lettera
forse manca (mi sono accorto solo ora che il tag code non mostra le parentesi quadre quindi le parentesi tonde rosse sostituiscile con quelle quadre) :
print lettera(i)
codice completo:
#----------------------------------------------------------------------
def funzione(stringa):
	""""""
	
	i = -1
	c = 0
	while c < len(stringa):
		lettera = stringa
		print lettera(i)
		i = i - 1
		c = c + 1
funzione('prova')
Correzione al post
(mi sono accorto solo ora che il tag code non mostra le parentesi quadre quindi le parentesi tonde rosse sostituiscile con quelle quadre)
questo deriva da un mio errore nell'inserire il codice utilizzando il tasto code,
per far si che le parentesi quadre siano visibili, si deve lasciare uno spazio fra parentesi quadra e contenuto

print lettera[ i ]
codice completo
#----------------------------------------------------------------------
def funzione(stringa):
	""""""
	
	i = -1
	c = 0
	while c < len(stringa):
		lettera = stringa
		print lettera[ i ]
		i = i - 1
		c = c + 1
funzione('prova')

--- Ultima modifica di Orsogrizzly in data 2016-04-06 23:31:54 ---

--- Ultima modifica di Orsogrizzly in data 2016-04-07 08:47:30 ---


Pagina: 1



Esegui il login per scrivere una risposta.