Es. 20. 08/05
May 27. Agostino propone questa soluzione:
Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:24:06) [MSC v.1600 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information.(svolto da Agostino) >>> #Esercitazione merge, se i file non risultano ordinati,il programma termina e fa solo append, se le 2 liste sono ordinate, non ci sono errori di sintassi, ma pare che il programma non termini (loop) ho provato l'istruzione item=l1.pop(0) e funzione, non riesco a trovare l'errore >>> l1=[1,3,5] >>> l2=[0,2,4,42] >>> def merge_liste(l1,l2): lista_ordinata=[] l1=l1[:] l2=l2[:] while(l1 and l2): if(l1[0]<=l2[0]): item=l1.pop(0) lista_ordinata.append(item) else: item=l2.pop(0) lista_ordinata.append(item) lista_ordinata.extend(l1 if l1 else l2) return lista_ordinata >>> print (merge_liste(l1,l2))
e' chiaramente ispirata da questo articolo di stack overflow (grande miniera di idee). Il problema e' in una indentazione! L'elemento da trasferire nella lista ordinata e' il primo della lista l1 o il primo della lista l2 in dipendenza di quale sia l'elemento di valore minore. L' else si deve quindi riferire all' if e non al while.
Come ho gia' detto in un altro messaggio, quello proposto e' il resoconto di una sessione con l'interprete. Si vuole un programma o un modulo... occorre aprire un nuovo file con IDLE.
May 30: il problema dell'indentazione dell'else sembra risolto, ma ancora non e' chiaro il concetto di cosa sia un programma! (... e non e' un concetto secondario di un corso di didattica della programmazione, no?)
Per cortesia trasformi la sua "soluzione" in un programma e "copi" dagli altri programmi la sintassi del wiki per farlo apparire correttamente nelle pagine del corso. grazie.