Topic: Aiuto su un progetto  (Letto 74 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Cristina

  • python unicellularis
  • *
  • Post: 1
  • Punti reputazione: 0
    • Mostra profilo
Aiuto su un progetto
« il: Aprile 10, 2020, 01:22 »
Ciao a tutti
sto facendo un progetto per università

nome dello studente, presente, assente, giustificato

INTR8025.txt
Pluto Cristina,0,0,0
Pippo Luigi,0,0,0
Minnie Anna,0,0,0

output sarebbe:
Studente n.1 Pluto Cristina
1.Presente
2.Assente
3.Giustificato

Quindi é un professore che aggiorna di volta in volta il calendario delle presenze...
Io ho creato una lista da cui prendo solo i nomi che mi servono per la prima riga (studente n. 1.....)
Poi una formula per leggere una riga per volta (Pluto Cristina,0,0,0)
ho capito come aggiornare di uno il valore 0 ogni volta che il prof va su presente, assente giustificato, ma mi da errore perchè dice che non si può mischiare le stringhe e integer... di seguito il codice...

module = open('INTR8015.txt', 'r')
    stu_name = []                                       # list name of each student each line
    for i in module:
        stu_name.append(i.split(',')[0])                # first word in each line
  • is the first name in the first line

    stu_name = [c.replace(',', ' ') for c in stu_name]              # remove comma
    print(f"Student #1: {stu_name[0]}")

    with open('INTR8015.txt') as fileVar:               # named each line Variable_0 first line student 1
        variable_0 = []                                                   # pack in a list
        variable_0 = fileVar.read().split('\n')[0]      # [1] if you want to read second line... insert n of line
    assigne= 0
    while assigne != 3:
        try:
            assigne = int(input("1: Present\n2. Absent\n3. Excused\n===> "))
            if assigne == 1:
                cris = []  # Empty list to refill
                i = variable_0 [3]  # index (4)
                b = i + 1  # store in b the index 3 + 1
                cris.append(b)  # store the result in a list cris
                variable_0 [3] = b  # on the list n the 3 index have to be b
                print(variable_0)



PLEASE HELP!!!    Grazie!

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.020
  • Punti reputazione: 9
    • Mostra profilo
Re:Aiuto su un progetto
« Risposta #1 il: Aprile 11, 2020, 10:50 »
Per prima cosa, quando posti del codice, formattalo con il pulsante "pythoncode" in modo da renderlo leggibile. Inoltre, se il tuo problema è un errore che Python restituisce, non devi *descrivere* vagamente l'errore, devi riportare il codice che esegui e l'errore che ricevi. Python per fortuna è preciso... perché non imparare a essere precisi da Python?

Detto questo, non mi è chiara una cosa... è davvero un *progetto* o è piuttosto un *esercizio*? Perché se è un progetto, abbi pazienza ma in questo codice non dimostri neanche lontanamente le competenze di Python necessarie per impostare un progetto così serio. E non capisco chi affiderebbe una cosa importante come il registro delle presenze a un codice di questo tipo.
Se invece è un esercizio... mah, sono confuso: forse ti è stato assegnato troppo presto rispetto a quello che hai imparato fino a questo punto... Perché una cosa del genere ha bisogno di codice strutturato per girare... non puoi pensare di affrontare un problema di questo tipo senza una *robusta* conoscenza delle funzioni, per dirne una. (Preferibilmente delle classi, ma insomma.) E poi ci sono problemi ancora più alla base: la cosa che spicca di più è quella nota " [1] if you want to read second line... insert n of line"... non puoi pensare che se uno vuole lo studente "n", deve *aprire il tuo codice*, *modificarlo* e farlo girare di nuovo. Una cosa come questa deve essere parametrizzata... di nuovo, le funzioni.

Per quanto riguarda lo specifico del tuo problema, si vede in fretta. Quando leggi da un file, quello che ottieni sono stringhe. Quando leggi da un input, ottieni di nuovo delle stringhe ma tu le trasformi in interi (correttamente, anche se in modo molto fragile). Quindi a un certo punto ti trovi a "mischiare" le stringhe con gli interi, come dici tu, e questo in Python non si può fare.

(riusciresti a vedere più in fretta questi problemi se usassi dei nomi più significativi per le tue variabili, tra l'altro. "variable_0", "assigne" sono nomi che non vogliono dire niente, e quando rileggi il codice ti traggono solo in inganno)