[RISOLTO] Esercizio Cicli e Funzioni

di il
2 risposte

[RISOLTO] Esercizio Cicli e Funzioni

Buonasera, ho svolto il seguente esercizio e "funziona"
def primoEsercizio(immagine,n):
               nuovaimmagine=""
               for i in range(0,n): 
                     for k in range(0,i):
                           nuovaimmagine+=" "
                     for j in range(i,n):
                           nuovaimmagine+= immagine[j]
                    nuovaimmagine+= "\n"
    return 0

immagine="abcde\n" \
                "abcde\n" \
                "abcde\n" \
                "abcde\n" \
                "abcde\n"
output= primoEsercizio(immagine,5)
L'unico problema è che se cambio l'immagine di partenza la stessa funzione fa cosi:
immagine="abcde\n" \ #immmagine di partenza
         "....e\n" \
         "....e\n" \
         "....e\n" \
         "....e\n"

immagine="abcde\n" \ #immagine finale
         " bcde\n" \
         "  cde\n" \
         "   de\n" \
         "    e\n"

#invece di restituire quella corretta che sarebbe la seguente
immagine="abcde\n" \
         " ...e\n" \
         "  ..e\n" \
         "   .e\n" \
         "    e\n"
Come posso fare a generalizzare la funzione di partenza rendendola utilizzabile per qualsiasi input?
Grazie in anticipo

2 Risposte

  • Re: [RISOLTO] Esercizio Cicli e Funzioni

    Ciao, il problema è che tu leggi sempre solo la prima riga; per leggere le righe successive devi spostarti a passi di n+1 (+1 perchè hai anche il carattere di new line da considerare '\n').
    Qui sotto il codice con la soluzione, con alcune cose messe a posto (oltre all'indentazione!):
    def primoEsercizio(immagine,n):
        nuovaimmagine=""
        for i in range(0,n):
            for k in range(0,i):
                nuovaimmagine+=" "
            for j in range(i,n):
                nuovaimmagine+= immagine[i*(n+1)+j]  #<- soluzione al problema
            nuovaimmagine+= "\n"
        return nuovaimmagine #<- qui ritornavi 0
    
    immagine = "abcde\n" \
               "fghij\n" \
               "klmno\n" \
               "pqrst\n" \
               "uvwxy\n"
    output = primoEsercizio(immagine,5)
    print(output)   #<- questo mancava!
  • Re: [RISOLTO] Esercizio Cicli e Funzioni

    Ti ringrazio moltissimo per l'aiuto!
Devi accedere o registrarti per scrivere nel forum
2 risposte