Sei sulla pagina 1di 85

Esercitazioni

Python
Allenamento #1
Costrutti di selezione
Esercizio 1
Problema
Scrivi uno script Python che esegue la divisione tra due numeri
inseriti dall’utente. Se la divisione è possibile, lo script scrive il
quoziente. Altrimenti, scrive «Impossibile» o «indeterminato» a
seconda del caso opportuno.

Esempi:
2, 0 -> Impossibile
0, 0 -> Indeterminato
5, 2 -> 2.5
Esercizio 2
Problema
Scrivi uno script Python che chiede all’utente di inserire un
numero intero compreso nell’intervallo [-10, 10]. Se il numero
inserito non è compreso nell’intervallo, si scrive un messaggio di
errore. Altrimenti, si scrive se il numero inserito è pari oppure
dispari.
Esercizio 3
Problema
Scrivi uno script Python che chiede all’utente di inserire la
lunghezza dei lati di un triangolo. Se non è possibile costruire un
triangolo con quei tre lati, si mostra un messaggio di errore.
Altrimenti, lo script scrive in output: «scaleno» o «isoscele» o
«equilatero».

Extra: lo script dice se il triangolo inserito è rettangolo oppure no.


Allenamento #2
Costrutti di selezione
Esercizio 4
Problema
Scrivi uno script Python che, preso in ingresso il valore di un
anno, stabilisca se l’anno è bisestile o no: mostri a video un
messaggio che dia in uscita True, se bisestile, False altrimenti.
Un anno è bisestile se è divisibile per 4 e, qualora sia l’anno
d’inizio di un secolo, solo se è divisibile per 400.

Esempi:
2021 -> False
2000 -> True
1900 -> False
2012 -> True
Esercizio 5
Problema
Scrivi uno script Python che, preso in ingresso il numero di ore,
di minuti e di secondi, calcoli il numero totale di secondi e lo dia
in output.
Esercizio 6
Problema
Scrivi uno script Python che, preso in ingresso il numero totale di
secondi, dia in output il numero di ore, minuti e secondi.
Esercizio 7
Problema
Scrivi uno script Python che determina le soluzioni
dell'equazione di secondo grado ax^2 + bx + c.
Allenamento #3
Costrutti di iterazione
Esercizio 8
Problema
Scrivi uno script Python che legge un numero in input e stampa il
quadrato di tutti i numeri non negativi minori di esso.

Esempio:
3🡪
0
1
4
Esercizio 9
Problema
Scrivi uno script Python che calcola il fattoriale di un numero
intero non negativo n letto in input.

Esempio:
5 🡪 120
0🡪1
-1 🡪 «Valore inserito non valido»
Esercizio 10
Problema
Scrivi uno script Python che calcoli la media di N voti di un
alunno.
Allenamento #4
Costrutti di iterazione
Esercizio 11: cicli annidati
Problema
Scrivi uno script Python che stampa la tavola pitagorica per i
numeri da 1 a 10.
Esercizio 12
Problema
Scrivi uno script Python che restituisce True se il numero letto in
input è un numero primo, False altrimenti.
Esercizio 13
Problema
Scrivi uno script Python che trova le due coppie di numeri la cui
somma dei cubi da come risultato 1729.

1729 è il numero di Hardy-Ramanujan, in seguito a un aneddoto immediatamente


precedente alla morte del famoso matematico indiano Srinivasa Ramanujan. «Una
volta, in un taxi da Londra, Hardy notò il numero della vettura, 1729. Deve averci
pensato un po' perché entrando nella stanza dove Ramanujan era disteso a letto,
prima ancora di salutare borbottò il suo disappunto. Era, disse, un numero piuttosto
insulso, aggiungendo che sperava non rendesse tale anche la giornata. "No,
Hardy," rispose Ramanujan, "è un numero molto interessante. Si tratta del più
piccolo numero che si possa scrivere come somma di due cubi in due modi
diversi."»
Allenamento #5
Costrutti di iterazione
Esercizio 14
Problema
Scrivi uno script Python che esegue l’elevamento a potenza
utilizzando moltiplicazioni ripetute. L’esponente accettato
dev’essere un numero intero non negativo.

Ad esempio, 15 ** 3 == 15 * 15 * 15 == 3375
Esercizio 15
Problema
Scrivi uno script Python che esegue la divisione tra due numeri
interi non negativi utilizzando sottrazioni ripetute, mostrando
poi in output quoziente e resto.

Ad esempio, 15 / 4 dovrà dare come risultato: «quoziente: 3, resto: 3»


Esercizio 16
La successione di Fibonacci è una successione di numeri interi
in cui ciascun numero è la somma dei due precedenti, eccetto
i primi due che sono, per definizione: F0 = 0 e F1 = 1. I primi
numeri della successione sono: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55...

Problema
Scrivi uno script Python che stampi i primi N numeri della
successione di Fibonacci. N è una variabile da chiedere in input
all'utente.
Allenamento #6
Esercizio 17
Problema
Scrivi uno script Python che calcola il minimo comune multiplo
tra due numeri interi letti in input.

Ad esempio, il m.c.m. tra 17 e 23 è 391; quello tra 4 e 8 è 8;


quello tra 0 e 3 è 0.
Esercizio 18
Problema
Scrivi uno script Python che stampa i fattori primi di un numero N
letto in input.

I fattori primi sono i numeri primi che dividono N. Per esempio:


• 1234 🡪 2, 617
• 121 🡪 11
• 123456 🡪 2, 3, 643
Esercizio 18: versione alternativa
Nel 1874, il signor William Stanley Jevons scriveva in un suo libro:
«Può il lettore dire quali sono i due numeri moltiplicati tra loro che
produrranno il numero 8616460799? Penso che sia improbabile
che qualcuno ci riesca, a parte me stesso»

Problema
Scrivi uno script Python che stampa i fattori primi di 8616460799.
Esercizio 19
Problema
Scrivi uno script Python che stampi i numeri perfetti minori di un
numero N letto in input.

Ad esempio, per N = 10000 🡪 6, 28, 496, 8128


Allenamento #7
Stringhe
Esercizio 20
Problema
Scrivi un programma che legge un testo in input e restituisce il
testo scritto in ASCII decimale. I numeri decimali devono essere
separati da uno spazio.

Ad esempio, se la stringa in input è "ciao mamma", il tuo script


deve restituire: 99 105 97 111 32 109 97 109 109 97
Esercizio 21
Il palindromo è una sequenza di caratteri che, letta al contrario,
rimane invariata. Sono esempi di palindromi: "", "A", "101",
"osso"...
Non sono esempi di palindromi: "Natan" (la prima N è maiuscola,
l'ultima minuscola), "asso", "permesso", "Aa"...

Problema
Scrivi uno script Python che chiede una parola come input e
indica in output se la parola è palindroma oppure no.
Esercizio 22
Questo è un tabellone 3x3 (come nel gioco --- --- ---
| | | |
"crucis"). Ovviamente, sono disponibili in --- --- ---
molte altre dimensioni (8x8 per gli scacchi, | | | |
19x19 per Go e molti altri). --- --- ---
| | | |
--- --- ---

Problema
Scrivi uno script Python che chiede all'utente la dimensione del
tabellone da realizzare e poi stampa quel tabellone.
Esercizio 23
Problema
Scrivi uno script Python che, ricevuta in input una stringa s,
restituisce la stessa stringa, ma ribaltata.

Ad esempio, se la stringa è s=‘filippo’, restituisce ‘oppilif’.

Pro: prova a scrivere una sola riga di codice per questa funzione.
Allenamento #8
Stringhe
HackerRank
Per svolgere gli esercizi dell’allenamento #8, bisogna aprire un account
gratuito su HackerRank.
Nelle seguenti slide, è riportato solo il testo principale del problema.
Aprendo il link nel titolo della slide, si trovano le indicazioni precise di
ciò che è richiesto fare.
Esercizio 24: What’s your name?
Problema
You are given the firstname and lastname of a person on
two different lines. Your task is to read them and print the
following:

Hello firstname lastname! You just delved into python.


Esercizio 25: sWAP cASE
Problema
You are given a string and your task is to swap cases. In other
words, convert all lowercase letters to uppercase letters and vice
versa.
Esercizio 26: String validators
Problema
You are given a string S. Your task is to find out if the string S
contains: alphanumeric characters, alphabetical characters,
digits, lowercase and uppercase characters.
Esercizio 27: Text alignment
Problema
You are given a partial code that is used for generating the
HackerRank Logo of variable thickness.
Your task is to replace the blank (______) with rjust, ljust or
center.
Allenamento #9
Liste
Esercizio 28
Problema
Scrivi uno script Python che, data una lista di numeri, restituisce:
1. la somma di tutti gli elementi della lista;
2. il minimo elemento nella lista;
3. il massimo elemento nella lista
Esercizio 29
Problema
Scrivi uno script Python che, date due liste, restituisce True se
esse hanno almeno un elemento in comune, altrimenti restituisce
False.
Esercizio 30
Problema
Scrivi uno script Python che, data una lista di numeri interi,
restituisce due liste: una contenente soltanto i numeri pari, l’altra
contenente soltanto i numeri dispari.
Esercizio 31
Problema
Scrivi uno script Python che, data una lista di numeri, sostituisce
a ogni numero il suo quadrato.
Allenamento #10
Liste e stringhe
Esercizio 32
Problema
Scrivi uno script python che, ricevute una parola e un testo,
restituisce True se la parola è contenuta nel testo, False
altrimenti.
Esercizio 33
Problema
Scrivi un programma che legge un testo scritto in ASCII decimale
e ne restituisce la traduzione in caratteri. I numeri decimali nel
testo in input sono separati da uno spazio.

Ad esempio, se la stringa in input è 99 105 97 111 32 109 97 109


109 97, il tuo script deve restituire: "ciao mamma"
Esercizio 34
Problema
Scrivi uno script Python che, data una lista di stringhe, elimina
dalla lista tutte le stringhe di lunghezza minore di N. N è un
numero intero chiesto in input all’utente.
Esercizio 35
Problema
Scrivere uno script Python che, dato un testo in input, cerca
delle stringhe palindrome al suo interno. Se trova una stringa
palindroma lunga almeno tre caratteri, stampa quella stringa in
output.
Allenamento #11
Liste e stringhe
Esercizio 36
Problema
Scrivi uno script Python che crea la funzione di cifratura di un
cifrario di Cesare. Data una stringa in input, ogni carattere della
stringa è sostituito con il carattere ASCII situato 3 posizioni più
avanti. Ottieni così un testo cifrato.

Esempio:
“messaggio super segreto” → “phvvdjjlr#vxshu#vhjuhwr”
“ciao mamma” → “fldr#pdppd”
Esercizio 37
Problema
Scrivi uno script Python che crea la funzione di decifratura di un
cifrario di Cesare. Data una stringa cifrata in input, ogni carattere
della stringa è sostituito con il carattere ASCII situato 3 posizioni
più indietro. Ottieni così un testo decifrato.

Esempio:
“phvvdjjlr#vxshu#vhjuhwr” → “messaggio super segreto”
Esercizio 38
Problema
Scrivi uno script Python che, dato un testo, lo stampa in output
andando a capo ogni 30 caratteri.
Esempio:
"In un medioevo alternativo la razza umana è stata decimata dall'avvento dei giganti, grandi creature,
fisicamente simili all'uomo, di altezza compresa tra i tre e i quindici metri e che non possiedono un apparato
riproduttivo." →
“In un medioevo alternativo la
razza umana è stata decimata d
all'avvento dei giganti, grand
i creature, fisicamente simili
all'uomo, di altezza compresa
tra i tre e i quindici metri
e che non possiedono un appara
to riproduttivo.”
Esercizio 39
Problema
Scrivi uno script Python che, dato un testo, restituisce True se
esso contiene tutte le vocali minuscole del nostro alfabeto (‘a’,
‘e’, ‘i’, ‘o’, ‘u’), altrimenti False.

Esempi:
“””All’ombra de’ cipressi e dentro l’urne
Confortate di pianto è forse il sonno
Della morte men duro? “”” → True
“””odorata ginestra,
contenta dei deserti.””” → False
Allenamento #12
Liste e stringhe
Esercizio 40
Problema
Scrivi uno script Python che, dato un testo, ogni volta che
incontra due caratteri consecutivi uguali, rimuove il secondo
carattere.
Esempi:
“soprattutto” → “sopratuto”
"""Tanto gentile e tanto onesta pare
la donna mia, quand'ella altrui saluta,
ch'ogne lingua devèn, tremando, muta,
e li occhi no l'ardiscon di guardare.""" →
“””Tanto gentile e tanto onesta pare
la dona mia, quand'ela altrui saluta,
ch'ogne lingua devèn, tremando, muta,
e li ochi no l'ardiscon di guardare.”””
Esercizio 41
Problema
Scrivi uno script Python che, data una lista L1 e una lista L2,
restituisce True se L2 è contenuta in L1, False altrimenti.

Esempi:
l1 = [1, 2, True, 'WOW']
l2 = [2, True] → True

l1 = [1, 2, True, 'WOW']


l2 = [2, True, 'ciao'] → False
Esercizio 42
Problema
Scrivi uno script Python che, data una lista L1 e una lista L2,
calcola la differenza L1 - L2.

Esempi:
l1 = [1, 2, True, 'WOW']
l2 = [2, True] → [1, ‘WOW’]

l1 = [1, 2, True, 'WOW']


l2 = [2, True, 'ciao', 1, ‘WOW’] → []
Esercizio 43
Problema
Scrivi uno script Python che, data una lista di numeri, sposta tutti
gli 0 presenti nella lista in fondo alla lista stessa.

Esempio:
[3, 4, 0, 0, 0, 6, 2, 0, 6, 7, 6, 0, 0, 0, 9, 10, 7, 4, 4, 5, 3, 0, 0, 2, 9, 7, 1]

[3, 4, 6, 2, 6, 7, 6, 9, 10, 7, 4, 4, 5, 3, 2, 9, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Esercizi delle verifiche
Liste e stringhe
Esercizio 44: [2DSA] l’attacco dei giganti
Eren Jaeger, grazie al potere del Gigante d'Attacco, può fronteggiare al
massimo dieci giganti classe 15 alla volta. "Classe 15" significa: gigante
alto 15 metri.
Shiganshina, il distretto dove Eren abita, sta per subire un assalto da
parte dei giganti.
Il team di ricerca ti fornisce una lista delle classi dei giganti che stanno
per attaccare Shiganshina.
Tutte le classi dei giganti sono inserite in una stessa riga di input,
separate da uno spazio.
[continua]
Esercizio 44: [2DSA] l’attacco dei giganti
Il tuo script Python deve convertire la stringa suddetta in una lista di
numeri interi, dopodiché deve scrivere in output: "Eren, scappa!", se il
numero di giganti classe 15 o più è maggiore di dieci, altrimenti: "Eren,
trasformati!".
Esempi:
[7, 12, 15, 1, 3, 12, 24, 20, 16, 7, 4, 6, 14, 5, 9, 20, 15, 22, 22, 18]
--> Eren, trasformati!

[12, 21, 8, 16, 1, 7, 14, 24, 23, 23, 17, 17, 6, 20, 6, 18, 20, 24, 8, 6]
--> Eren, scappa!
Esercizio 45: [2DSA] cifrario a sostituzione
monoalfabetico
Il tuo prof. vuole costringerti ad appassionarti alla crittografia e perciò
stai per scrivere un cifrario a sostituzione monoalfabetico. Il nome è
spaventoso, ma non preoccuparti. Questo è ciò che devi fare:
1. fissi due liste, L1 ed L2, con lo stesso numero di caratteri;
2. leggi in input una stringa, chiamiamola s;
3. Per ogni carattere di s, se esso è presente in L1, sostituisci tale
carattere in s con quello presente nella stessa posizione in L2.
Se s contiene un carattere non presente in L1, fermi il processo di
cifratura e scrivi in output: "ERRORE".
[Continua]
Esercizio 45: [2DSA] cifrario a sostituzione
monoalfabetico
Esempi:
l1 = ['a', 'b', 'c', 'o', 'e']
l2 = ['@', 'w', '?', '#', 'q']
"abaco" --> "@w@?#"

l1 = ['a', 'b', 'c', 'o', 'e']


l2 = ['@', 'w', '?', '#', 'q']
"ciao mamma" --> "ERRORE"

**Nota bene**: in output devi scrivere o soltanto "ERRORE" o soltanto il testo cifrato. Non
puoi, ad esempio, stampare una parte del testo cifrato e poi "ERRORE".
Esercizio 46: [2CSA] I miei voti
Vuoi disperatamente uno script Python che "tenga a bada" i tuoi voti scolastici
e stai per scriverne le basi.
Hai due liste: 'materie' e 'voti'. Se, ad esempio, in posizione 2 della lista
materie è scritto 'inf' e nella lista voti, in posizione 2, è scritto '10', significa
che hai meritato 10 in informatica.
Il tuo script legge in input il nome di una materia. Dopodiché, resituisce tutti i
voti che hai ottenuto in quella materia e infine la media dei tuoi voti in quella
materia.
Se l'utente inserisce un nome di materia non valido, stampi "ERRORE" e lo
script termina.
[Continua]
Esercizio 46: [2CSA] I miei voti
Esempio:
materie = ['ita', 'mate', 'ing', 'ing', 'mate', 'inf', 'ita', 'ing', 'inf', 'ing']
voti = [3, 2, 8, 10, 2, 3, 7, 3, 10, 5]
"ing" -->
8
10
3
5
Media: 6.5
Esercizio 47: [2CSA]
ET_NOC_ERALRAP_ACNOP_IM_OP
Il titolo dell'esercizio è un messaggio cifrato.
Stai per scrivere uno script Pyhton in grado di decifrarlo.
Il tuo script fa questo: legge una stringa in input, chiamiamola 'testo_cifrato', costituita
solo da caratteri numerici, speciali, o alfabetici maiuscoli.
Dopodiché, restituisce un'altra stringa, la stringa decifrata, ottenuta così:
1. rovescia 'testo_cifrato'
2. sosotituisce la stringa 'PO' con 'MA'
3. sostiuisce il carattere '_' con ' '
4. rende tutti minuscoli i caratteri alfabetici.
Esempio: 'OPMOP_OAIC' -> 'ciao mamma'.
E se inserisci come input il titolo dell'esercizio, cosa ottieni?
Esercizio 48: [2ASA] Yu-Gi-Oh!
Hai accumulato un numero spropositato di carte di Yu-Gi-Oh!
Hai conosciuto un ragazzo, Yugi, al quale hanno buttato in mare tutte le carte, per
invidia.
Siccome sei una persona buona, prometti di regalargli tutti i tuoi doppioni.
Il tuo algoritmo fa questo: data una lista di stringhe, le quali sono i nomi delle tue carte,
restituisce due liste: una contiene il tuo nuovo mazzo, privo di doppioni, e un'altra
rappresenta il nuovo mazzo di Yugi, costituito dai tuoi doppioni. Esempio chiarificatore:
Tuo mazzo iniziale: ['Avian', 'Obelisco del Tiranno', 'Bustinatrix', 'Bustinatrix', 'Avian',
'Bubbleman', 'Avian']
Tuo nuovo mazzo: ['Avian', 'Obelisco del Tiranno', 'Bustinatrix', 'Bubbleman']
Mazzo di Yugi: ['Bustinatrix', 'Avian', 'Avian']
Esercizio 49: [2ASA] ò_+2`#.u2.+r0Rru0C+.#
Il titolo dell'esercizio è un messaggio cifrato. Stai per scrivere uno script Pyhton in grado di
decifrarlo. Conosci le seguenti due stringhe della stessa lunghezza:
s1 = "RA$U#|8@2`0r+_X.òvC~Æu"
s2 = "abcdefghilmnopqrstuvz "
Il tuo script fa questo: legge una stringa in input, chiamiamola 'testo_cifrato', costituita
solo da caratteri presenti in s1.
Dopodiché, restituisce un'altra stringa, ottenuta sostituendo ogni carattere di
'testo_cifrato' con il carattere di s2 situato nella stessa posizione in s1.
Ad esempio, se 'testo_cifrato' contiene il carattere 'R', situato in posizione 0 in s1, esso
dovrà essere sostituito dal carattere 'a', situato nella posizione 0 della stringa s2.
Esempio: '$2R+u0R00R' -> 'ciao mamma'.
E se inserisci come input il titolo dell'esercizio?
Basics
Cit. needed
Basics
Gli esercizi di questa sezione sono semplici e riguardano i concetti
fondamentali di Python. Esistono per coloro che vogliono essere sicuri
di aver compreso le basi del linguaggio di programmazione.
Basics 1
Problema
Scrivi uno script Python che, dati due valori inseriti dall’utente e
salvati in due variabili A e B, scambia i valori custoditi nelle due
variabili e li stampa in output.
Basics 2
Problema
Scrivi uno script Python che, dati N numeri inseriti dall'utente,
restituisce in output il minimo e il massimo numero inseriti.
Basics 3
Problema
Scrivi uno script Python che esegue la moltiplicazione tra due
numeri utilizzando addizioni ripetute.

Ad esempio, 15 * 3 == 15 + 15 + 15 == 45
Basics 4
Problema
Scrivi uno script Python che, letti tre numeri in input, stampa
True se essi formano una terna pitagorica, altrimenti False.

Ad esempio:
3, 5, 4 🡪 True
2, 9, 11 🡪 False
Basics 5
Problema
Scrivi uno script Python che visualizzi tutti i numeri da 10 a 100
multipli di 3 e di 5.
Basics 6
Problema
Scrivi uno script Python che visualizzi la somma dei numeri pari
e il prodotto dei numeri dispari compresi in un intervallo [a, b],
dove i valori di a e b sono chiesti all’utente. A deve essere
maggiore di 0, b deve essere maggiore di a.

Ad esempio:
Estremo minore dell'intervallo: 3
Estremo maggiore dell'intervallo: 5
Somma dei numeri pari: 4
Prodotto dei numeri dispari: 15
Extra
«Vi lascio queste trenta pagine da studiare per domani, per evitare che
abbiate il tempo di andare a buttarvi dal ponte di Paderno»
cit. una mia professoressa
Extra
Gli esercizi extra sono quelli per persone che, avendo finito di
svolgere in classe gli esercizi dell’esercitazione, non possono
essere abbandonate a loro stesse, bensì devono essere
incentivate a migliorarsi ulteriormente nella programmazione.
Di solito, gli esercizi extra sono nettamente più difficili degli
esercizi delle comuni esercitazioni: così, devo crearne solo uno
ogni tanto, sperabilmente.
Sono totalmente facoltativi.
Extra 1
Problema
Scrivi uno script Python che, dati due numeri naturali, ne calcoli il
massimo comune divisore tramite sottrazioni ripetute.
Extra 2
Problema
Scrivi uno script Python che, ricevuto come input un numero
intero positivo, ne restituisca il toziente.

In matematica, la funzione φ di Eulero o toziente, è una funzione


definita, per ogni intero positivo n, come il numero degli interi
compresi tra 1 e n che sono coprimi con n.
Ad esempio, φ(8) = 4 poiché i numeri coprimi di 8 sono quattro:
1, 3, 5, 7.
Extra 3
Problema
Scrivi uno script Python che stampi i numeri di Armstrong minori
di un numero N letto in input.

Ad esempio, per N = 1000000 🡪


0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474,
54748, 92727, 93084, 548834
Extra 4
La successione Tribonacci è una successione di numeri interi in cui
ciascun numero è la somma dei tre precedenti, eccetto i primi tre che
sono, per definizione: F0 = 0, F1 = 0, F2 = 1. I primi numeri della
successione sono: 0, 0, 1, 1, 2, 4, 7, 13, 24, 44, 81, 149, 274, 504, 927,
1705, 3136, 5768, 10609...

Problema
Scrivi uno script Python che stampi i primi N numeri della
successione Tribonacci. N è una variabile da chiedere in input
all'utente.
Extra 5
La successione N-bonacci è una successione di numeri interi in
cui ciascun numero è la somma degli N numeri precedenti,
eccetto i primi N che sono, per definizione, tutti zeri, tranne l’N-
esimo che è 1.

Problema
Scrivi uno script Python che stampi i primi M numeri della
successione N-bonacci. N e M sono variabili da chiedere in input
all'utente.
Extra 5
Se l’utente inserisce N = 2, il vostro script deve stampare la
successione Fibonacci.
Se l’utente inserisce N = 3, il vostro script deve stampare la
successione Tribonacci.
Extra 6
Ottieni il badge ‘SOLVED’ per tutti gli esercizi sulle stringhe
a questa pagina.

Potrebbero piacerti anche