Io ti mostro l'algoritmo, tu ti codifichi il programma.
A1) Porre PRIMO = - infinito
A2) Porre SECONDO = - infinito # p.es. - 2^31
B) Per ogni valore V nel flusso in ingresso:
B1) se V > PRIMO
B1a) porre SECONDO = PRIMO
B1b) porre PRIMO = V
B1c) proseguire da B.
B2) se V > SECONDO
B2a) porre SECONDO = V
B2b) proseguire da B.
C) Al termine del flusso in ingresso restituire i valori PRIMO e SECONDO.
Ti ho fatto un po' di esempi al volo in IDLE, l'ambiente interattivo di Python
(Trovi documentazione e testi ai link
http://www.python.it
http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm ).
#
>>> def listaInteriCasuali(quanti, basso, alto):
import random
return [random.randint(basso, alto) for k in range(quanti)]
>>> a
[759, 139, 772, 630, 216, 920, 790, 499, 417, 491, 277]
>>> def dueMax(L):
PRIMO, SECONDO = 2*[- 2**31]
for V in L:
if V > PRIMO:
SECONDO = PRIMO
PRIMO = V
continue
if V > SECONDO:
SECONDO = V
return (PRIMO, SECONDO)
>>> dueMax(a)
(920, 790)
>>> a.sort()
>>> a
[139, 216, 277, 417, 491, 499, 630, 759, 772, 790, 920]
>>>
#
Lo sai che Y!A ti dà 3 punti se scegli una "Miglior risposta"? Se puoi, scegli questa!
v. http://www.yanswersblogit.com/b4/2010/01/08/evita-lo-spareggio-scegli-la-miglior-risposta/