Untitled
unknown
python
9 months ago
3.4 kB
8
Indexable
# Funzione che trova il cliente con l'esposizione (importo) massima
def EsposizioneMaxCliente(T1):
# Dizionario per tenere traccia del totale per ogni cliente
totali = {}
# Scorre ogni riga della tabella T1
for riga in T1:
# Estrae il codice cliente e l'importo dalla riga corrente
codice_cliente = riga[1] # Il codice cliente è nella seconda colonna
importo = riga[2] # L'importo è nella terza colonna
# Se il cliente è già presente nel dizionario
if codice_cliente in totali:
# Aggiunge l'importo al totale esistente per quel cliente
totali[codice_cliente] = totali[codice_cliente] + importo
else:
# Se è la prima volta che vediamo questo cliente, inizializza il suo totale
totali[codice_cliente] = importo
# Inizializza le variabili per trovare il massimo
max_cliente = None # Cliente con l'importo massimo
max_totale = 0 # L'importo massimo trovato finora
# Scorre il dizionario dei totali per trovare il massimo
for cliente, totale in totali.items():
# Se trova un totale maggiore del massimo corrente
if totale > max_totale:
# Aggiorna sia il cliente che il totale massimo
max_cliente = cliente
max_totale = totale
# Restituisce una lista con il codice del cliente e il suo totale massimo
return [max_cliente, max_totale]
# Funzione che calcola le differenze tra importi ordinati e pagamenti
def ReportFlussiMonetari(T1, T2):
# Lista che conterrà i risultati [cliente, differenza]
risultato = []
# Scorre ogni riga della tabella T1 (ordini)
for riga_t1 in T1:
cod_cliente = riga_t1[1] # Codice cliente dall'ordine
cod_ordine = riga_t1[0] # Codice ordine
importo_t1 = riga_t1[2] # Importo dell'ordine
# Inizializza la somma dei pagamenti per questo ordine
somma_t2 = 0
# Cerca tutti i pagamenti relativi a questo ordine in T2
for riga_t2 in T2:
# Se trova un pagamento che corrisponde al codice ordine
if riga_t2[4] == cod_ordine:
# Aggiunge l'importo del pagamento al totale
somma_t2 = somma_t2 + riga_t2[3]
# Calcola la differenza tra pagamenti e importo ordine
differenza = somma_t2 - importo_t1
# Aggiunge alla lista risultato il cliente e la differenza
risultato.append([cod_cliente, differenza])
# Restituisce la lista completa dei risultati
return risultato
# Dati di esempio per gli ordini (T1)
# Struttura: [codice_ordine, codice_cliente, importo, data]
T1 = [
[25, "A16", 357, "02/04/24"], # Ordine 25 del cliente A16
[13, "A17", 150, "08/01/24"], # Ordine 13 del cliente A17
[26, "A16", 280, "23/06/22"] # Ordine 26 del cliente A16
]
# Dati di esempio per i pagamenti (T2)
# Struttura: [codice_prodotto, tipo, data, importo, codice_ordine]
T2 = [
["P1", "Carne", "24/01/24", 300, 25], # Pagamento per ordine 25
["P22", "Verdura", "13/05/22", 17, 13], # Pagamento per ordine 13
["P22", "Verdura", "04/10/23", 79, 13], # Altro pagamento per ordine 13
["P2", "Carne", "30/11/23", 57, 25] # Altro pagamento per ordine 25
]
# Stampa il report dei flussi monetari
print(ReportFlussiMonetari(T1,T2))Editor is loading...
Leave a Comment