Advertisement
Guest User

Untitled

a guest
May 26th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.05 KB | None | 0 0
  1. immagine = "abcde\nabcde\nabcde\nabcde\nabcde\n"
  2. n = 5
  3. def primoEsercizio(immagine, n):
  4.     #nel for loop creo la matriceImmagine con ogni riga che corrisponde a una parte della stringa che lui chiama "immagine" fino a \n
  5.     matriceImmagine = []
  6.     indicePrecedente = -1
  7.     for i in range(0,len(immagine)):
  8.         if immagine[i] == "\n":
  9.             matriceImmagine.append(immagine[indicePrecedente+1:i])
  10.             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,
  11.                                  #la seconda riga della matrice sarebbe "abcde\nabcde" perchè riparte sempre da capo anzichè ripartire dalla roba subito dopo quello che abbiamo appena preso
  12.     #qui sotto sto usando la matrice che è nel return di creaNuovaMatrice come argomento di daMatriceAStringa
  13.     return daMatriceAStringa(creaNuovaMatrice(matriceImmagine)) #un modo più esplicito di ottenere esattamente la stessa cosa è fare:
  14.     #nuovaMatrice = creaNuovaMatrice(matriceImmagine)
  15.     #nuovaImmagine = daMatriceAStringa(nuovaMatrice)
  16.     #return nuovaImmagine
  17.  
  18. def creaNuovaMatrice(immagine):
  19.     matrice = []
  20.     #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
  21.     for indiceRiga in range(0,len(immagine)):
  22.         if indiceRiga%2!=0: #ovvero se la riga è dispari:
  23.             matrice.append(immagine[indiceRiga]) #nella nuova matrice rimetto la riga vecchia, l'intestazione dice che non deve essere modificata
  24.         elif indiceRiga%2==0: #ovvero se la riga è pari:
  25.             nuovaRiga = "" #creo una nuova stringa per rappresentare la nuova riga
  26.             for indiceLettera in range(0,len(immagine[indiceRiga])): # per ogni carattere nella riga della vecchia matrice
  27.                 if indiceLettera%2==0: #se la lettera è un carattere pari
  28.                     nuovaRiga = nuovaRiga + immagine[indiceRiga][indiceLettera] #allora alla nuova riga (che è sempre una stringa) aggiungo il carattere vecchio (non deve cambiare per l'intestazione)
  29.                 elif indiceLettera%2!=0 and indiceLettera != 0: #se si tratta di un carattere dispari
  30.                     nuovaRiga = nuovaRiga  + "X" #anzichè aggiungere il vecchio carattere, aggiungo una X
  31.             matrice.append(nuovaRiga)
  32.     return matrice
  33.  
  34. def daMatriceAStringa(matrice):
  35.     stringaFinale = ""
  36.     #itero su ogni riga e poi su ogni lettera della riga per creare una nuova stringa finale
  37.     for indiceRiga in range(0,len(matrice)):
  38.         for indiceLettera in range(0,len(matrice[indiceRiga])):
  39.             stringaFinale = stringaFinale + matrice[indiceRiga][indiceLettera]
  40.         #questo livello di indentazione significa che il programma ha finito una riga, quindi aggiungo una \n per ottenere l'output del prof
  41.         stringaFinale = stringaFinale + "\n"
  42.     return stringaFinale
  43.  
  44. print(primoEsercizio(immagine,n))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement