Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- immagine = "abcde\nabcde\nabcde\nabcde\nabcde\n"
- n = 5
- def primoEsercizio(immagine, n):
- #nel for loop creo la matriceImmagine con ogni riga che corrisponde a una parte della stringa che lui chiama "immagine" fino a \n
- matriceImmagine = []
- indicePrecedente = -1
- for i in range(0,len(immagine)):
- if immagine[i] == "\n":
- matriceImmagine.append(immagine[indicePrecedente+1:i])
- indicePrecedente = i #qui gli sto dicendo di scorrere ogni volta che taglia una parola, se non lo facessi e lasciassi immagine[:1] la prima volta funzionerebbe, ma già dalla seconda,
- #la seconda riga della matrice sarebbe "abcde\nabcde" perchè riparte sempre da capo anzichè ripartire dalla roba subito dopo quello che abbiamo appena preso
- #qui sotto sto usando la matrice che è nel return di creaNuovaMatrice come argomento di daMatriceAStringa
- return daMatriceAStringa(creaNuovaMatrice(matriceImmagine)) #un modo più esplicito di ottenere esattamente la stessa cosa è fare:
- #nuovaMatrice = creaNuovaMatrice(matriceImmagine)
- #nuovaImmagine = daMatriceAStringa(nuovaMatrice)
- #return nuovaImmagine
- def creaNuovaMatrice(immagine):
- matrice = []
- #creo una nuova matrice perchè altrimenti modifico una stringa (cioè i singoli caratteri delle righe), cosa non concessa perchè una stringa è "immutable". uso nuovaRiga quando uso X al posto del carattere originale
- for indiceRiga in range(0,len(immagine)):
- if indiceRiga%2!=0: #ovvero se la riga è dispari:
- matrice.append(immagine[indiceRiga]) #nella nuova matrice rimetto la riga vecchia, l'intestazione dice che non deve essere modificata
- elif indiceRiga%2==0: #ovvero se la riga è pari:
- nuovaRiga = "" #creo una nuova stringa per rappresentare la nuova riga
- for indiceLettera in range(0,len(immagine[indiceRiga])): # per ogni carattere nella riga della vecchia matrice
- if indiceLettera%2==0: #se la lettera è un carattere pari
- nuovaRiga = nuovaRiga + immagine[indiceRiga][indiceLettera] #allora alla nuova riga (che è sempre una stringa) aggiungo il carattere vecchio (non deve cambiare per l'intestazione)
- elif indiceLettera%2!=0 and indiceLettera != 0: #se si tratta di un carattere dispari
- nuovaRiga = nuovaRiga + "X" #anzichè aggiungere il vecchio carattere, aggiungo una X
- matrice.append(nuovaRiga)
- return matrice
- def daMatriceAStringa(matrice):
- stringaFinale = ""
- #itero su ogni riga e poi su ogni lettera della riga per creare una nuova stringa finale
- for indiceRiga in range(0,len(matrice)):
- for indiceLettera in range(0,len(matrice[indiceRiga])):
- stringaFinale = stringaFinale + matrice[indiceRiga][indiceLettera]
- #questo livello di indentazione significa che il programma ha finito una riga, quindi aggiungo una \n per ottenere l'output del prof
- stringaFinale = stringaFinale + "\n"
- return stringaFinale
- print(primoEsercizio(immagine,n))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement