Estratto del documento

Temi d'esame di Informatica svolti

Primo anno · Politecnico di Torino 1

Indice

Auto noleggio 3

Biblioteche 4

Bowling 5

Concorso letterario 6

Concorso prodotti 7

Controllo compiti copiati 8

Costi stampa 9

Diario alimentare 10

Discografia 11

Esame 12

Fantacalcio 13

Gestione conto ristorante 14

Gioco dell'oca 15

Glucometer 16

Hacking 17

Intelligenza demenziale 18

Leggi di murphy 20

Meteo 21

Parametri vitali 23

Partita a dadi 25

Piramidi 26

Polizia 28

Prestito pc 29

Prova 30

Ricerca comuni 32

Sensori temperatura 33

Sequenza dna 34

Statistiche torneo 35

Storpiatore nomi 36

Strategia militare 38

Tempesta 39

Traiettorie droni 40

Voti 41

2

Auto noleggio

Consegna

Leggere il parco auto con la disponibilità giorno per giorno (L = libera, A = affittata). Data una categoria e

un intervallo di giorni, elencare le auto libere e prenotarne una scelta dall'utente.

File di input

auto.csv

Categoria,Marca,Modello,Colore,Lunedì,Martedì,Mercoledì,Giovedì,Venerdì,Sabato,Domenica

utilitaria,FIAT,Panda,rosso,L,L,L,A,A,A,A

utilitaria,KIA,Pikanto,bronzo,A,A,L,L,L,A,A

lusso,Mercedes,Classe S,nero,L,L,L,L,L,A,A

sportiva,Lamborghini,Huracan,giallo,L,L,L,L,L,L,L

furgone,Ford,Transit,bianco,A,A,A,A,A,L,L

Soluzione (main.py)

import csv

FILE = "auto.csv"

def file_reader(file_path):

cars = []

with open(file_path, 'r', encoding = 'UTF-8') as file_name:

csv_reader = csv.reader(file_name)

for line in csv_reader:

cars += [line]

return cars

def search(table, category, day_start, day_end):

book = []

wait = 1

for line in table:

if wait == 0:

if line[0] == category:

if line[3 + day_start] == 'L' and line[3 + day_end] == 'L':

book.append(line)

else: wait -= 1

print_book(book)

return book

def edit_table(table, car, day_start, day_end):

for line in table:

if line[1] == car[1] and line[2] == car[2]:

for i in range(day_end - day_start + 1):

line[3 + day_start + i] = 'A'

print_table(table)

def print_book(table):

for i, line in enumerate(table):

print(" ", i+1, ")", line[1], line[2], "colore", line[3])

def print_table(table):

for line in table:

for element in line:

print(element, end = " ")

print()

if __name__ == "__main__":

cars = file_reader(FILE)

print_table(cars)

data_input = input("\nScegli categoria e giorni: ")

category, day_start, day_end = data_input.split()

book = search(cars, category, int(day_start), int(day_end))

if len(book) == 0:

print(" Non ci sono auto disponibili! :(")

else:

car = int(input("Quale vuoi prenotare?: "))

edit_table(cars, book[car - 1], int(day_start), int(day_end)) 3

Biblioteche

Consegna

Leggere l'inventario di una biblioteca (copie per ISBN). Per ogni titolo con più di 3 copie, mettere le copie in

eccesso nel file delle scuole e preparare il nuovo inventario.

File di input

inventarioNew.csv

978-81-7525-766-5;Omero;Odissea978-81-7525-766-5; Mary Shelley;Frankenstein o il moderno

Prometeo;AB001;BA013;FZ111;FZ112;FZ113;FZ114;FZ115;FZ116;MN214;XY100;XY123;XY124;XY125;XY126;XY128;Y

Y128

978-88-7775-766-7;Omero;Odissea978-88-7775-766-7; Mary Shelley;Frankenstein o il moderno

Prometeo;AB001;BA013;FZ111;FZ112;FZ113;FZ114;FZ115;FZ116;MN214;XY100;XY123;XY124;XY125;XY126;XY128;Y

Y128

inventarioOld.csv

XY128;978-81-7525-766-5;Odissea;Omero

FZ114;978-88-7775-766-7;Frankenstein o il moderno Prometeo; Mary Shelley

XY123;978-81-7525-766-5;Odissea;Omero

AB001;978-23-7525-7546-2;Iliade;Omero

FZ111;978-88-7775-766-7;Frankenstein o il moderno Prometeo; Mary Shelley

YY128;978-81-7525-766-5;Odissea;Omero

inventarioScuola.csv

978-81-7525-766-5;Omero;Odissea;XY100;XY124;XY125;XY126

978-88-7775-766-7; Mary Shelley;Frankenstein o il moderno Prometeo;FZ113;FZ115;FZ116

Soluzione (main.py)

import csv

import os

def book_counter(file_path):

isbn_count = {}

with open(file_path, newline = '') as csv_file:

csv_reader = csv.reader(csv_file, delimiter = ';')

for row in csv_reader:

isbn = row[1]

if isbn in isbn_count:

isbn_count[isbn] += 1

else:

isbn_count[isbn] = 1

book_out = 0

book_isbn = 0

isbn_count_sorted = {key: value for key, value in sorted(isbn_count.items())}

for isbn, count in isbn_count_sorted.items():

if count > 3:

book_out += count - 3

book_isbn += 1

school_writer('inventarioOld.csv', isbn, count)

new_list_writer('inventarioOld.csv', isbn, count)

if book_isbn != 0 and book_out != 0:

print(f"Numero di libri da regalare: {book_isbn}, copie totali: {book_out}")

else:

print("Non ci sono copie di libri che possano essere regalate :(")

def school_writer(file_path, book, book_count):

head = True

copy = 3

copy_code = []

with open(file_path, 'r') as csv_file:

csv_reader = csv.reader(csv_file, delimiter = ';')

with open('inventarioScuola.csv', 'a') as new_file:

for row in csv_reader: 4

if row[1] == book:

if head:

new_file.write(book + ";" + row[3] + ";"+ row[2])

head = False

if copy == 0:

copy_code.append(";" + row[0])

else:

copy -= 1

copy_code.sort()

copy_code_str = ''.join(copy_code)

new_file.write(copy_code_str + "\n")

def new_list_writer(file_path, book, book_count):

head = True

head_others = True

copy_code = []

copy = 3

with open(file_path, 'r') as csv_file:

csv_reader = csv.reader(csv_file, delimiter = ';')

with open('inventarioNew.csv', 'a') as new_file:

for row in csv_reader:

if row[1] == book:

if book_count > 3:

if head:

new_file.write(book + ";" + row[3] + ";"+ row[2])

head = False

copy_code.append(";" + row[0])

else:

if head_others:

new_file.write(book + ";" + row[3] + ";"+ row[2])

head_others = False

copy_code.append(";" + row[0])

copy_code.sort()

copy_code_str = ''.join(copy_code)

new_file.write(copy_code_str + "\n")

def delete_file(file_path):

if os.path.exists(file_path):

os.remove(file_path)

def main():

delete_file('inventarioScuola.csv')

delete_file('inventarioNew.csv')

book_counter('inventarioOld.csv')

main()

Bowling

Consegna

Leggere i punteggi dei giocatori di bowling (cognome, nome e lanci di ogni partita). Stampare la classifica

per punteggio totale e indicare chi ha abbattuto più volte tutti i birilli (strike) e chi ha fatto più volte zero.

File di input

bowling.txt

Rossi;Massimo;7;10;6;5;10;4;9;9;5;10;10

Verdi;Giuseppe;10;10;6;6;7;9;9;8;9;9;10;10;10

De Piscopo;Tullio;9;9;8;8;7;7;6;6;0;5

Montalbano;Salvo;10;10;9;10;10;10;9;10;10;10

Soluzione (main.py)

def file_reader(file_path):

leaderboard = []

with open(file_path, 'r', encoding = "UTF-8") as file_name:

max_skittles = 0

min_skittles = 0 5

for line in file_name:

line = line.rstrip('\n').rsplit(';')

points = line[2:]

max_skittles = points.count('10')

min_skittles = points.count('0')

leaderboard.append([line[0], line[1], int(sum(map(int, points))), int(max_skittles),

int(min_skittles)])

leaderboard.sort(key = lambda x: x[2], reverse = True)

print_table(leaderboard)

def print_table(table):

for line in table:

print(f"{line[0]:12}{line[1]:12}{line[2]}")

top_players = [player for player in table if player[3] == max([x[3] for x in table])]

worst_players = [player for player in table if player[4] == max([x[4] for x in table])]

for player in top_players:

print(f"\n{player[0]} {player[1]} ha abbattuto tutti i birilli {player[3]} volta/e")

for player in worst_players:

print(f"{player[0]} {player[1]} ha abbattuto tutti i birilli {player[4]} volta/e")

if __name__ == "__main__":

file_reader("bowling.txt")

Concorso letterario

Consegna

Leggere i libri di un concorso con prezzo, categoria, nazione e voti (il punteggio finale è la media tra il voto

e la media dei tre giurati). Stampare il libro in base al prezzo, la top 3 per punteggio, le categorie e il

numero di libri per nazione.

File di input

concorso.txt

ISBN_1 Horror 7.50 ITA 9.3 7.5 8.8 8.7

ISBN_2 Poesia 10.00 ITA 9.0 9.0 9.0 9.2

ISBN_3 Narrativa 8.30 USA 8.4 7.2 8.5 8.6

ISBN_4 Narrativa 7.30 RUS 9.3 3.7 9.5 9.6

ISBN_5 Horror 5.10 GRB 8.2 8.9 8.9 6.6

ISBN_6 Narrativa 5.00 USA 8.2 5.9 7.9 8.6

ISBN_7 Poesia 7.20 GRB 8.0 7.0 8.0 6.0

Soluzione (main.py)

FILE = "concorso.txt"

def file_reader(file_path):

library = []

with open(file_path, 'r', encoding = 'UTF-8') as file_name:

for line in file_name:

line = line.rstrip('\n').rsplit(' ')

points, avg_jury = 0.00, 0.00

points += float(line[4])

for i in range(5, 8): avg_jury += float(line[i])

avg_jury /= 3

points = round((points + avg_jury) / 2, 2)

library.append([line[0], line[1], line[2], line[3], float(points)])

print_table(library)

def print_table(table):

table.sort(key = lambda x: x[2])

isbn_prize = table[0]

print(f"\nIl libro più costoso è: {isbn_prize[0]}\n")

print("TOP 3 per punteggio")

table.sort(key = lambda x: x[4], reverse = True)

for i in range(0, 3): 6

print(f" {i+1} classificato: {table[i][0]} punteggio: {table[i][4]}")

print("\nCATEGORIE")

categories = []

for line in table:

if line[1] not in categories:

categories.append(line[1])

for line in categories: print(line)

print("\nLIBRI PER NAZIONE")

number_per_nation = []

found = False

for line in table:

for i, row in enumerate(number_per_nation):

if line[3] in row:

found = True

index = i

if found:

number_per_nation[index][1] += int(1)

else:

number_per_nation.append([line[3], int(1)])

found = False

for line in number_per_nation: print(f" {line[0]} libri: {line[1]}")

if __name__ == "__main__":

file_reader(FILE)

Concorso prodotti

Consegna

Leggere i prodotti con i voti di una giuria di cinque membri. Il punteggio di ogni prodotto è la somma dei

voti senza il più alto e senza il più basso. Stampare il miglior prodotto e la classifica delle nazioni.

File di input

prodotti.txt

SKU012345 Coltello 7.50 ITA 9.3 8.9 9.7 9.7 9.8

SKU012346 Piatto 10.00 ITA 9.0 9.0 9.0 9.2 9.5

SKU012347 Bicchiere 8.30 USA 8.4 8.7 8.5 8.6 9.0

SKU012348 Piatto 7.30 RUS 8.3 8.7 9.5 9.6 9.0

SKU012349 Bicchiere 5.10 GRB 8.2 8.9 8.9 8.6 9.3

SKU012350 Forchetta 5.00 USA 8.2 8.9 8.9 8.6 9.3

SKU012351 Coltello 7.20 GRB 8.0 8.0 8.0 8.0 8.0

Soluzione (main.py)

# Concorso prodotti - versione riscritta e commentata

# Ogni riga del file ha il formato:

# CODICE NOME PREZZO NAZIONE voto1 voto2 voto3 voto4 voto5

def leggi_prodotti(nome_file):

"""Legge il file e restituisce una lista di dizionari, uno per prodotto."""

prodotti = []

with open(nome_file, 'r', encoding='UTF-8') as file:

for riga in file:

campi = riga.split() # split() senza argomenti ignora gli spazi extra

if not campi: # salta le righe vuote

continue

codice = campi[0]

nome = campi[1]

nazione = campi[3]

voti = [float(v) for v in campi[4:9]] # i 5 voti della giuria

# punteggio: somma dei 5 voti, senza il più alto e senza il più basso

punteggio = sum(voti) - min(voti) - max(voti)

prodotti.append({

'codice': codice,

'nome': nome,

'nazione': nazione, 7

'punteggio': round(punteggio, 2),

})

return prodotti

def miglior_prodotto(prodotti):

"""Restituisce il prodotto con il punteggio più alto.

In caso di parità vince il primo nel file."""

return max(prodotti, key=lambda p: p['punteggio'])

def classifica_nazioni(prodotti):

"""Somma i punteggi dei prodotti di ogni nazione e ordina dal più alto al più basso."""

totali = {} # dizionario: nazione -> punteggio totale

for p in prodotti:

totali[p['nazione']] = totali.get(p['nazione'], 0) + p['punteggio']

return sorted(totali.items(), key=lambda coppia: coppia[1], reverse=True)

if __name__ == "__main__":

prodotti = leggi_prodotti("prodotti.txt")

migliore = miglior_prodotto(prodotti)

print(f"Il miglior prodotto è: {migliore['codice']} {migliore['nome']} "

f"con un punteggio di {migliore['punteggio']}")

print("\nClassifica nazioni:")

for nazione, punti in classifica_nazioni(prodotti):

print(f"{nazione}: {round(punti, 2)}")

Controllo compiti copiati

Consegna

Leggere le risposte degli studenti (il trattino indica una risposta mancante) e le posizioni degli studenti in

aula. Segnalare i vicini di banco le cui risposte fanno pensare a una copiatura.

File di input

posizioni.txt

Sofia Leonardo Alessandro Mattia

Edoardo Gabriele Aurora

Vittoria Tommaso Giulia Ginevra Andrea

Giorgia Francesco Riccardo Lorenzo

Beatrice Emma Greta

risposte.txt

Emma C C C - C D B - - D

Gabriele - B A C A A B D D -

Tommaso A - D A A B - - D -

Riccardo - A B D A D C C - A

Edoardo - B A - A A B - D -

Sofia - D B B A B C D A A

Ginevra C A A B B D A - B C

Vittoria C C D - A C C D B D

Beatrice C C C B C D B - C D

Leonardo B C B A B A D - A B

Giorgia - A - C - D - D D A

Greta C C C B C D B - C D

Francesco A A - D C A A D D B

Lorenzo - A B D - D C C - -

Aurora D C B A C A A B - D

Alessandro C B B - A A C C C D

Andrea A B C A D D - - A B

Giulia A B D D A B A - D A

Mattia C B B - A A C C C D

Soluzione (main.py)

def file_reader(file_path):

matrix = []

with open(file_path, 'r', encoding = 'UTF-8') as file_name:

for line in file_name:

matrix.append(line.rstrip().rsplit())

return matrix

def snitch_mode(students, answers, number):

for line in students: 8

for i in range(0, (len(line) - 1)):

student_1, student_2 = [], []

for row in answers:

if line[i] == row[0]:

student_1 = row[1:]

break

for row in answers:

if line[i + 1] == row[0]:

student_2 = row[1:]

sum_answers_1, sum_answers_2 = 0, 0

for j in range(len(student_1)):

if student_1[j] == student_2[j]:

sum_answers_1 += 1

sum_answers_2 += 1

elif student_1[j] != '-' and student_2[j] == '-':

sum_answers_1 += 1

elif student_1[j] == '-' and student_2[j] != '-':

sum_answers_2 += 1

if sum_answers_1 == sum_answers_2 and sum_answers_1 == number: print(f"Le risposte di

{line[i]} e {line[i+1]} sono le stesse")

elif sum_answers_1 == number - 2 and sum_answers_2 == number: print(f"{line[i]} può aver

copiato da {line[i+1]}")

elif sum_answers_1 == number and sum_answers_2 == number - 2: print(f"{line[i+1]} può aver

copiato da {line[i]}")

if __name__ == "__main__":

answers = file_reader('risposte.txt')

students = file_reader('posizioni.txt')

snitch_mode(students, answers, (len(answers[0]) - 1))

Costi stampa

Consegna

Leggere i libri (titolo e numero di pagine) e il listino di stampa per fasce di pagine. Calcolare il costo di

stampa di ogni libro e il totale da pagare.

File di input

costipagine.txt

301;400;1.6€

401;500;1.4€

1;100;2.5€

101;200;2€

701;1000;1€

201;300;1.8€

1001;2000;0.8€

501;700;1.2€

libri.txt

Luci e Ombre in Python;232

Liste nascoste;125

Brevi poemi in Python;15

Dizionario di Python;666

Python Wars;1342

Soluzione (main.py)

def file_reader(file_path):

matrix = []

with open(file_path, 'r', encoding = 'UTF-8') as file_name:

for line in file_name:

l1 = line.rstrip('\n€').rsplit(';')

matrix.append(l1)

return matrix

def calc(libri, costipagine):

costipagine.sort(key = lambda x: int(x[0]))

print("Listino prezzi:")

for line in costipagine:

print(f"Fino a {line[1]} pagine: {line[2]}€/pagina")

print("\nCOSTI DI STAMPA") 9

somma = 0.00

for line in libri:

costo = 0

for row in costipagine:

if int(row[0]) <= int(line[1]) <= int(row[1]):

costo = round(int(line[1]) * float(row[2]), 2)

print(f"{line[0]} - Pagine: {line[1]} - Costo: {costo}€")

somma += costo

print(f"Totale: {somma}€")

if __name__ == "__main__":

libri = file_reader('libri.txt')

costipagine = file_reader('costipagine.txt')

calc(libri, costipagine)

Diario alimentare

Consegna

Leggere il diario alimentare giornaliero (peso e pasti di ogni giorno) e i valori nutrizionali degli alimenti.

Calcolare le calorie di ogni giorno, confrontarle con il fabbisogno (30 kcal per kg di peso) e dire se la dieta è

accettabile.

File di input

diary.txt

***

1 85

yogurt_greco 100

carbonara 250

petto_di_pollo 300

pasta_in_bianco 250

***

2 87

petto_di_pollo 400

pasta_in_bianco 400

***

3 86

yogurt_greco 250

carbonara 250

petto_di_pollo 400

nutrients.txt

pasta_in_bianco 75 15 5

carbonara 41 15 35

petto_di_pollo 0 20 1

yogurt_greco 3 10 0

riso_basmati 60 20 3

tacchino 0 22 3

Soluzione (main.py)

def diary_reader(file_path):

with open(file_path, 'r', encoding = 'UTF-8') as file_name:

matrix, row = [], []

first = True

Anteprima
Vedrai una selezione di 10 pagine su 42
Temi d'esame svolti di Informatica Pag. 1 Temi d'esame svolti di Informatica Pag. 2
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Temi d'esame svolti di Informatica Pag. 6
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Temi d'esame svolti di Informatica Pag. 11
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Temi d'esame svolti di Informatica Pag. 16
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Temi d'esame svolti di Informatica Pag. 21
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Temi d'esame svolti di Informatica Pag. 26
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Temi d'esame svolti di Informatica Pag. 31
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Temi d'esame svolti di Informatica Pag. 36
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Temi d'esame svolti di Informatica Pag. 41
1 su 42
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher maurizio.costa.03 di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Torino o del prof Benso Alfredo.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community