Utilizzo Classi

di il
7 risposte

Utilizzo Classi

class Studente:
    def __init__(self, nome, prove):
        self.nome = nome
        self.voti = []
        for i in range(prove):
            self.voti.append(0)

    def getName(self):
        return self.nome

    def setVoto(self, i):
        voto = int(input("Digita un voto: "))
        self.voti[i-1] = voto

    def getVoto(self, i):
        return self.voti[i-1]

    def getMedia(self):
        return sum(self.voti)/len(self.voti)

    def getHighScore(self):
        return max(self.voti)

    def __str__(self):
        return "Name: " + self.nome + "\nScores: " + str(self.voti)
Ho provato ad implementare uno degli esempi più frequenti proposti per imparare a utilizzare le classi, la gestione studenti. Riscontro però un problema quando vado ad eseguire il programma: creo l'oggetto, riesco a caricare i voti conseguiti col metodo setVoti, ma successivamente gli altri metodi per ottenere altre informazioni (a parte quello iniziale), non funzionano. Qualche suggerimento?

7 Risposte

  • Re: Utilizzo Classi

    Ciao,
    Guardando il codice non ho notato alcun errore, e nel lato pratico nemmeno,
    probabilmente smagli il modo di usare la classe o l'oggetto.
    Prova a riguardare le tue nozioni teoriche o, se preferisci, manda il codice in cui usi questa classe così posso capire qual è il problema.
  • Re: Utilizzo Classi

    stud_uno=Studente("Mario Rossi", 5)
    stud_uno.setVoto(1)
    stud_uno.setVoto(2)
    stud_uno.setVoto(3)
    stud_uno.setVoto(4)
    stud_uno.setVoto(5)
    print(stud_uno)
    stud_uno.getMedia()
    stud_uno.getHighScore()
    ecco: provo a lanciarlo così, ma in output si ferma al caricamento dei voti, l'invocazione dei metodi getMedia e getHighScore non mi da nulla.
  • Re: Utilizzo Classi

    Capito...
    il metodo getMedia e getHighScore prevedono una restituzione del valore, non l'output di esso.
    Mi spiego meglio:
    o fai
    
    print(stud_uno.getMedia())
    print(stud_uno.getHighScore())
    
    oppure modifichi il metodo in modo che stampi il valore invece di restituirlo.
  • Re: Utilizzo Classi

    A me funziona correttamente (usando la console Python di PyCharm su Linux). Anche senza print il valore viene stampato in console.
  • Re: Utilizzo Classi

    Giustamente, ma, da quello che ho capito, parliamo di un programma in esecuzione; non della console.

    Durante l'esecuzione del programma vengono visualizzati solo i dati stampati con print;
    contrariamente alla console, che permette di visualizzare anche i dati restituiti, senza che essi vengano per forza stampati.
  • Re: Utilizzo Classi

    Grazie innanzitutto ad entrambi.
    Io faccio riferimento alla console di Pycharm per windows (utilizzo python3. e non va senza il print; non ho mandato il programma in esecuzione proprio perchè non trovavo soluzione. Su un testo che consulto di tanto in tanto vi è un esempio molto simile, ma manda i singoli metodi in run con l'idle e funzionano correttamente senza print.
    pongo un'ulteriore domanda : vorrei dei consigli su due testi che sono interessato a consultare (vorrei infatti una "bibbia" di Python e un libro per approcciarmi al machine learning). Menzionare gli autori vorrebbe dire fare pubblicità e quindi violare il regolamento del forum?
  • Re: Utilizzo Classi

    *Python3.8
Devi accedere o registrarti per scrivere nel forum
7 risposte