Programmazione per l'esame: Risposte Python che ottengono punteggio
Come scrivere codice Python agli esami che guadagna davvero il massimo dei voti — struttura, casi limite e gestione del tempo sotto pressione.
I valutatori degli esami non eseguono il tuo codice attraverso un debugger per venti minuti. Lo leggono una volta, forse due, e lo controllano rispetto a una rubrica. Una soluzione che funziona ma ignora la rubrica può comunque perdere punti, mentre una leggermente più rozza che colpisce ogni checkpoint può ottenere un punteggio più alto. Scrivere Python per un esame è un'abilità diversa dallo scrivere Python per un progetto reale, ed è utile praticarlo separatamente.
Leggi la rubrica prima di leggere il problema due volte
La maggior parte degli esami di programmazione — domande di risposta libera nello stile di AP CS A, esami parziali universitari, valutazioni di bootcamp di codifica — pubblicano regole di credito parziale. Una linea tipica di rubrica è: "1 punto per struttura di loop corretta, 1 punto per valore di ritorno corretto, 1 punto per gestione del caso di lista vuota." Se scrivi un denso one-liner che ottiene la risposta giusta ma salta un loop esplicito, alcuni valutatori ti decurteranno anche se l'output è corretto.
Prima di digitare qualsiasi cosa, identifica i pezzi che un valutatore probabilmente controllerà separatamente:
- La firma della funzione corrisponde esattamente a ciò che è stato richiesto (nome, ordine dei parametri, tipo di ritorno)
- Caso base e caso ricorsivo, se la ricorsione è prevista
- Limiti del loop (gli errori off-by-one sono la singola perdita di punti più comune)
- Casi limite: input vuoto, input di un singolo elemento, numeri negativi, duplicati
Scrivi questi come commenti prima. # handle empty list, # base case: n == 0. Questo costa dieci secondi e garantisce che non dimentichi il caso che un valutatore sta specificamente cercando.
Struttura il codice affinché il credito parziale sia visibile
Confronta due risposte a "scrivi una funzione che restituisce il secondo numero più grande in una lista":
def second_largest(nums):
return sorted(nums)[-2]
def second_largest(nums):
if len(nums) < 2:
return None
largest = second = float('-inf')
for n in nums:
if n > largest:
second = largest
largest = n
elif n > second and n != largest:
second = n
return second
La prima è corretta per input ben formato ma si arresta in modo anomalo su una lista con meno di due elementi e dà una risposta sbagliata su duplicati come [5, 5, 3] (restituisce 5, discutibilmente sbagliato a seconda delle specifiche). La seconda è più lunga ma ogni linea di rubrica — caso limite, logica corretta, ritorno corretto — è esplicita e ha la sua propria linea che un valutatore può contrassegnare. In un esame cronometrato, la seconda versione ottiene un punteggio più alto quasi sempre, anche se ci vuole più tempo per digitarla.
Non ottimizzare prematuramente, non lasciare neanche bug ovvi
Le domande degli esami raramente testano la conoscenza Big-O a meno che non lo dicano direttamente. Se il prompt dice "scrivi una funzione che trova i duplicati", un loop annidato a O(n²) va bene a meno che il prompt non specifichi input grande o chieda una soluzione efficiente. Spendere tempo d'esame per convertire a un approccio basato su set O(n) quando non è stato richiesto è tempo che non recuperi.
Detto questo, alcuni errori costeranno sempre punti indipendentemente dalla rubrica:
- Usare
==invece diisin modo incoerente causando bug di logica (raro negli esami Python ma appare nelle domande heavy di confronto) - Mutare una lista mentre si itera su di essa —
for x in lst: lst.remove(x)è una trappola classica d'esame che produce output silenziosamente sbagliato - Dimenticare
returne stampare invece — molti autograder controllano i valori di ritorno, non stdout - Off-by-one in
range()—range(len(nums))vsrange(len(nums) - 1)vale la pena controllare ogni volta che lo scrivi
Traccia il tuo codice a mano prima di inviarlo
Sugli esami su carta e sulla maggior parte degli esami di codifica nel browser, non riesci a eseguire il codice. Scegli un piccolo esempio e traccialo linea per linea, annotando i valori delle variabili mentre vai. Questo cattura forse l'80% degli errori di logica in meno di due minuti, ed è la cosa di massimo valore che puoi fare con il tempo rimasto.
Per le funzioni ricorsive in particolare, traccia almeno due livelli di profondità e scrivi esplicitamente il caso base raggiunto. I valutatori spesso assegnano un punto solo per aver dimostrato che il caso base termina correttamente, separato dal punto per la correttezza del caso ricorsivo.
Gestisci l'orologio come una risorsa, non come un ripensamento
Se una sezione di risposta libera vale 9 punti su tre domande secondarie, budgetta approssimativamente tempo uguale e passa avanti se rimani bloccato oltre quel budget — una parte (b) mezza scritta ma quasi corretta vale più punti grezzi di una parte (a) perfetta e una parte (c) vuota. Scrivi una funzione stub con la firma giusta e un pass o un'ipotesi anche se non puoi finire la logica; una firma corretta da sola a volte vale un punto di rubrica di per sé.
Per ulteriori informazioni su come scrivere Python pulito e testabile al di fuori della sala d'esame, e su strutture dati che appaiono costantemente in queste domande, consulta i segmenti Python e Computer Science correlati su Korra Studio.
Scritto con assistenza AI, revisionato e pubblicato da Michal Pilch (CISSP), Korra Studio.
Questa è una nota dalla knowledge base di Korra Studio — la piattaforma abbina ogni argomento a mentoring 1-to-1.
Inizia gratisarrow_forward