Esercizi Python di pratica con soluzioni da eseguire
Quando conosci cicli, liste e dizionari, ti servono problemi su cui esercitarti. Questi sei tornano continuamente nei corsi e nei colloqui. Ogni soluzione è una delle molte valide, e ognuna è stata eseguita per ottenere l'output mostrato.
FizzBuzz
Stampa i numeri da 1 a 15. Per i multipli di 3 stampa Fizz, per i multipli di 5 stampa Buzz, e per i multipli di entrambi stampa FizzBuzz. Il trucco è verificare prima il caso combinato, perché 15 è anche multiplo di 3 e di 5.
for n in range(1, 16):
if n % 15 == 0:
print("FizzBuzz")
elif n % 3 == 0:
print("Fizz")
elif n % 5 == 0:
print("Buzz")
else:
print(n)Output:
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz
Controllo del palindromo
Un palindromo si legge uguale al contrario. Converti il testo in minuscolo e rimuovi gli spazi, così maiuscole e spaziatura non contano, poi confrontalo con il suo inverso.
def is_palindrome(text):
cleaned = text.lower().replace(" ", "")
return cleaned == cleaned[::-1]
print(is_palindrome("Never odd or even"))
print(is_palindrome("Python"))Output:
True False
Conta le vocali
Scorri i caratteri e conta quelli presenti nella stringa delle vocali. sum() su un generatore di 1 è un modo compatto di contare.
def count_vowels(text):
return sum(1 for ch in text.lower() if ch in "aeiou")
print(count_vowels("Pip and the Scrap Isle"))Output:
6
La parola più comune
Usa un dizionario come contatore. counts.get(word, 0) restituisce 0 per una parola che non hai ancora visto, quindi puoi aggiungere 1 senza controllare. max con key=counts.get sceglie la parola con il conteggio più alto.
text = "the robot and the island and the sea"
counts = {}
for word in text.split():
counts[word] = counts.get(word, 0) + 1
best = max(counts, key=counts.get)
print(best, counts[best])Output:
the 3
Rimuovi i duplicati e mantieni l'ordine
Convertire in un set rimuove i duplicati ma perde l'ordine. Per mantenere la prima occorrenza di ogni elemento, tieni una lista di quelli già visti.
items = ["a", "b", "a", "c", "b"]
seen = []
for item in items:
if item not in seen:
seen.append(item)
print(seen)Output:
['a', 'b', 'c']
Due numeri che sommati danno un obiettivo
Data una lista e un obiettivo, restituisci le posizioni di due numeri la cui somma è l'obiettivo. Un dizionario dei numeri già visti risponde in un solo passaggio: per ogni numero, controlla se quello che ti manca era già stato visto.
def two_sum(numbers, target):
seen = {}
for i, n in enumerate(numbers):
if target - n in seen:
return seen[target - n], i
seen[n] = i
print(two_sum([2, 7, 11, 15], 9))Output:
(0, 1)
Domande comuni
- Dove trovo altri esercizi di pratica in Python?
- Parti dalle idee sopra e cambiale: conta le consonanti invece delle vocali, trova la parola meno comune, o restituisci tutte le coppie per two-sum. Modificare un problema risolto è il prossimo esercizio migliore.
- Devo guardare la soluzione se mi blocco?
- Prova almeno dieci minuti prima. Poi leggi la soluzione, chiudila e riscrivila a memoria il giorno dopo. Copiare senza riscrivere non costruisce la competenza.
- Questi problemi sono adatti per esercitarsi ai colloqui?
- Sì, FizzBuzz, i palindromi, il conteggio e two-sum sono tutti classici esercizi di riscaldamento. Consulta la guida ai colloqui di questo sito per le domande concettuali (liste contro tuple, is contro ==).