• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python - 'object oriented programming'. Problem ze zrozumieniem kodu i rozwiązaniem problemu

42 Warsaw Coding Academy
0 głosów
136 wizyt
pytanie zadane 10 października 2019 w Python przez belmont Nowicjusz (150 p.)

Hej,

czy któryś z forumowiczów jest mi w stanie pomóc z "obiect oriented programming"?

Robię pewien tutorial pythona z internetu lecz natknąłem się na problem przez który nie mogę pójść dalej ;) 

W dziale o programowaniu obiektowym osoba która prowadzi kurs napisała krótki program w którym znajduje się klasa Student wraz z jego podstawowymi danymi takimi jak imie, nazwisko itp. Poniżej w pętli while zrobił mini system dodawania i wyświetlania wcześniej dodanych studentów :) 

Niestety program nie do końca działa tak jak instruktor to sobie wyobrażał, ponieważ po dodaniu kilku studentów i wybraniu opcji wyświetlenia ich, program wyświetla tylko ostatniego dodanego studenta. Instruktor stwierdził, że wyjaśni dlaczego oraz pokaże jak się z tym uporać w następnych odcinkach, ale niestety tego nie zrobił a ja nie jestem w stanie kontynuować kursu jak czegoś nie rozumiem bo mnie to irytuje :D 

Rozumiem z kodu, że program wyświetla tylko ostatnio dodanego studenta ponieważ przy dodawaniu studentów nadpisuje on tylko obiekt new_student zamiast tworzyć nowy. Będę wdzięczny za każe informacje które pomogą mi trochę zrozumieć w jaki sposób poprawić kod programu żeby działał tak jakie było jego założenie :)

Poniżej zapodaje kod

class Student:

    stuCount = 0

    def __init__(self,fname,lname,subject,grade):
        self.fname = fname
        self.lname = lname
        self.subject = subject
        self.grade = grade
        Student.stuCount += 1

    def displayStudentCount(self):
        print("Total amount of students is {}".format(Student.stuCount))

    def studentInfornation(self):
        print("First name: {}\n Last name: {}\nSubject: {}\nGrade: {}".format(self.fname,self.lname,self.subject,self.grade))

print("1 - Add student\n2 - Studen list")
while True:
    option = int(input("Ether your option?: "))
    if option == 1:
        first_name = input("Enter student name: ")
        last_name = input("Enter student last name: ")
        subject = input("Enter subject of the exam: ")
        mark = input("Enter student grade: ")
        new_student = Student(first_name,last_name,subject,mark)
    elif option ==2:
        new_student.studentInfornation()
    else:
        print("Unknown command")

 

 

 

1 odpowiedź

+2 głosów
odpowiedź 10 października 2019 przez Michałełe Nałogowiec (25,600 p.)
wybrane 11 października 2019 przez belmont
 
Najlepsza

Witam

Najlepiej dodać listę, i za każdym wpisaniem nowego ucznia dodawać go to tejże listy.

Napisz jakbyś miał jakieś wątpliwości :)

Przykładowy kod tutaj:

li = []

class Student:

    stuCount = 0
 
    def __init__(self,fname,lname,subject,grade):
        self.fname = fname
        self.lname = lname
        self.subject = subject
        self.grade = grade
        Student.stuCount += 1

    def displayInformation(self):
        print("First name: {} Last name: {} Subject: {} Grade: {}".format(self.fname,self.lname,self.subject,self.grade))

    def displayStudentCount(self):
        print("Total amount of students is {}".format(Student.stuCount))
 
    def studentInfornation(self):
        print("First name: {}\n Last name: {}\nSubject: {}\nGrade: {}".format(self.fname,self.lname,self.subject,self.grade))
 
print("1 - Add student\n2 - Studen list")

while True:
    option = int(input("Ether your option?: "))
    if option == 1:
        first_name = input("Enter student name: ")
        last_name = input("Enter student last name: ")
        subject = input("Enter subject of the exam: ")
        mark = input("Enter student grade: ")
        new_student = Student(first_name,last_name,subject,mark)
        li.append( new_student)
    elif option ==2:
        #new_student.studentInfornation()
        for i in range( 0, len(li)):
        	print( li[i].displayInformation())
    else:
        print("Unknown command")

 

Podobne pytania

0 głosów
2 odpowiedzi 1,405 wizyt
pytanie zadane 28 września 2017 w Python przez 0xf Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 1,496 wizyt
pytanie zadane 16 listopada 2017 w Python przez 0xf Dyskutant (8,180 p.)
0 głosów
0 odpowiedzi 133 wizyt
pytanie zadane 2 kwietnia 2020 w Python przez SzymonPJ Użytkownik (940 p.)

93,382 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,738 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...