DOMANDA [Python] Gestione di Matrici

Pubblicità

Cotrox

Utente Attivo
Messaggi
257
Reazioni
8
Punteggio
43
Salve ragazzi, sto cercando di esercitarmi e vorrei provare a creare un programmino per aggiungere/rimuovere prenotazioni ma ho un problema:

Supponiamo di avere una matrice:

MATRICE = [ [ a, b, c, d], [e, f, g, h] ]

se io volessi aggiungere una nuova riga contenente altri quattro elementi come dovrei fare?
per aggiungere elementi a una lista usavo il .append ma non posso farlo essendo una tupla...
 
Avevo commesso uno stupido errore perchè programmavo distrattamente... non avevo chiuso l'elenco di liste tra [ ]

Comunque adesso sto provando ad ampliare il tutto ma ricevo questo problema qui: TypeError: list indices must be integers or slices, not list

il codice attualmente è il seguente:

Codice:
""" Il programma chiede il giorno attuale e la lista di informazioni relativa alla nuova prenotazione.
    Al termine ritorna il numero delle attuali prenotazioni attive ed incassa nell'archivio quelle scadute. """

def verifica_utenti_in_uscita(day):
    for i in gestione_prenotazioni:
        if gestione_prenotazioni[i][2] == day:
            archivio.append(gestione_prenotazioni[i])
            gestione_prenotazioni.remove(estione_prenotazioni[i])
            

def aggiungi_prenotazione(a, b, c, d):
    numero_stanza = a
    da_giorno = b
    a_giorno = c
    a_nome_di = d

    nuovo_utente = [a, b, c, d]
    
    gestione_prenotazioni.append(nuovo_utente)
    
    return gestione_prenotazioni

def calendario(day):
    while day <= 31:
        return day
    else:
        day = 0

    verifica_utenti_in_uscita(day)

gestione_prenotazioni = [[ 0, 3, 4, 'Piero Verdi'],
                         [ 1, 4, 5, 'Antonio Rossi'],
                         [ 2, 4, 5, 'Andrea Giallo']]

calendario(int(input('Digita un giorno da 0 a 31 --> ',)))

aggiungi_prenotazione(int(input('Numero Stanza:',)), int(input('da giorno:',)), int(input('a giorno:',)), str
                      (input('a nome di:',)))

archivio = []

n = len(gestione_prenotazioni)

print('Attualmente sono disponibili', n, 'prenotazioni.')

print("\nPer accedere all'archivio e visualizzare le prenotazioni passate utilizza: archivio")

print("\nPer visualizzare la lista delle attuali prenotazioni digita: gestione_prenotazioni")
--- i due messaggi sono stati uniti ---
 
Ultima modifica:
Python:
for i in gestione_prenotazioni:
Stai iterando gli elementi della "matrice" e quindi ogni "i" è una lista, che non puoi usare per indicizzare la "matrice" stessa.
Dovresti piuttosto scrivere
Python:
for i in range(len(gestione_prenotazioni)):
oppure cambiare il codice interno e scrivere
Python:
for prenotazione in gestione_prenotazioni:
        if prenotazione[2] == day:
            archivio.append(prenotazione)
            gestione_prenotazioni.remove(prenotazione)
che mi sembra più chiaro.

Poi questa funzione:
Python:
def aggiungi_prenotazione(a, b, c, d):
    numero_stanza = a
    da_giorno = b
    a_giorno = c
    a_nome_di = d

    nuovo_utente = [a, b, c, d]
 
    gestione_prenotazioni.append(nuovo_utente)
 
    return gestione_prenotazioni
è inutilmente complicata, ti basta scrivere:
Python:
def aggiungi_prenotazione(a, b, c, d): 
    gestione_prenotazioni.append([a,b,c,d])
senza ritornare nulla, visto che l'oggetto "gestione_prenotazioni" che modifichi è definito nello scope superiore (e il valore di ritorno non lo usavi nemmeno prima mi pare).
 
Perfetto, poi ci ho ragionato un po' su e ci sono arrivato ed ho appena confrontato con il tuo commento, tutto più chiaro :P
 
Pubblicità
Pubblicità
Indietro
Top