Compare commits

...

4 Commits

Author SHA1 Message Date
davide 2aeaadfe18 Aggiunge esercizio 46 2026-04-30 15:48:08 +02:00
davide cc8ee1615b Aggiunge esercizio 45 2026-04-29 13:32:32 +02:00
davide 07d1e9dd75 aggiunge esercizio 44 2026-04-29 12:29:58 +02:00
davide 722e008efa aggiunge esercizio 43 2026-04-29 12:25:28 +02:00
6 changed files with 159 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
from os import strerror
file_name = "lab43.txt"
# Il dizionario conterra' una coppia chiave/valore per ogni lettera trovata:
# chiave = lettera, valore = quante volte appare nel file.
letters = {}
try:
stream = open(file_name, "rt", encoding="utf-8")
ch = stream.read(1)
while ch != "":
ch = ch.lower()
if "a" <= ch <= "z":
if ch in letters:
letters[ch] += 1
else:
letters[ch] = 1
ch = stream.read(1)
stream.close()
for letter in sorted(letters.keys()):
print(letter, "->", letters[letter])
except IOError as e:
print("Errore di I/O:", strerror(e.errno))
+1
View File
@@ -0,0 +1 @@
aBc
+36
View File
@@ -0,0 +1,36 @@
from os import strerror
file_name = "lab43.txt"
letters = {}
try:
source = open(file_name, "rt", encoding="utf-8")
ch = source.read(1)
while ch != "":
ch = ch.lower()
if "a" <= ch <= "z":
if ch in letters:
letters[ch] += 1
else:
letters[ch] = 1
ch = source.read(1)
source.close()
target = open(file_name + ".hist", "wt", encoding="utf-8")
for letter, counter in sorted(letters.items(), key=lambda item: item[1], reverse=True):
target.write(letter + " -> " + str(counter) + "\n")
target.close()
print("Istogramma salvato in:", file_name + ".hist")
except IOError as e:
print("Errore di I/O:", strerror(e.errno))
+64
View File
@@ -0,0 +1,64 @@
from os import strerror
class StudentsDataException(Exception):
pass
class BadLine(StudentsDataException):
def __init__(self, line_number, line):
message = "Riga " + str(line_number) + ": " + line.rstrip()
super().__init__(message)
class FileEmpty(StudentsDataException):
def __init__(self):
super().__init__("il file esiste, ma e' vuoto")
file_name = input("Inserisci il nome del file del Prof. Jekyll: ")
students = {}
try:
stream = open(file_name, "rt", encoding="utf-8")
lines = stream.readlines()
stream.close()
if len(lines) == 0:
raise FileEmpty()
for line_number, line in enumerate(lines, 1):
parts = line.split()
# Ogni riga deve avere esattamente: nome, cognome, punti.
if len(parts) != 3:
raise BadLine(line_number, line)
first_name = parts[0]
last_name = parts[1]
try:
# Accettiamo sia il punto sia la virgola come separatore decimale.
points = float(parts[2].replace(",", "."))
except ValueError:
raise BadLine(line_number, line)
student = first_name + " " + last_name
if student in students:
students[student] += points
else:
students[student] = points
if len(students) == 0:
raise FileEmpty()
for student in sorted(students.keys()):
print(student, students[student])
except FileEmpty as e:
print("Errore:", e)
except BadLine as e:
print("Errore nei dati di input:", e)
except IOError as e:
print("Errore di I/O:", strerror(e.errno))
+5
View File
@@ -0,0 +1,5 @@
John Smith 5
Anna Bolena 4,5
John Smith 2
Anna Bolena 11
Andrew Cox 1,5
+22
View File
@@ -0,0 +1,22 @@
import os
def find(path, dir):
if not os.path.isdir(path):
return
for name in os.listdir(path):
full_path = os.path.join(path, name)
if os.path.isdir(full_path):
if name == dir:
print(os.path.abspath(full_path))
find(full_path, dir)
if __name__ == "__main__":
start_path = input("Percorso di partenza: ")
directory_name = input("Directory da cercare: ")
find(start_path, directory_name)