Es. 20. 08/05

Da aptiva.

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.

Strumenti personali
Namespace

Varianti
Azioni
Navigazione
Strumenti