Program do wprowadzania ocen studentów

0

Witam poszukuję pomocy w stworzeniu programu, który będzie zawierał listę studentów (około 15), którzy będą mieli jednakowe przedmioty, ale inne oceny. Dostałam od prowadzącego wskazówkę że można zrobić to za pomocą csv. Na podstawie ocen program będzie liczyl średnie i mediany, ale to umiem wykonać, tylko mam problem ze stworzeniem takich list. Bardzo proszę o wskazówkę/pomoc

1

Najrozsądniejszym rozwiązaniem w tym przypadku wydaję się sql. Nie wiem jak wyglądają dane wsadowe (np. dane studenta, rok studiów, kierunek?, dane o przedmiotach?), ale na ich podstawie tworzysz sobie tabele w jakiejś relacyjnej bazie. Zadanie wygląda na proste i krótkie więc sqlite3 będzie dobrym wyborem ;)

2

Ogólnie Twój program musi:

  1. Wczytywać plik CSV do swoich struktur danych.
  2. Przeprowadzać operacje na swoich strukturach danych (dopisywanie studentów, ocen itd.).
  3. Zapisywać swoje struktury danych do pliku CSV.

Jak mogłaby wyglądać lista studentów z ich ocenami?
Może to być lista instancji klasy Student.
Klasa Student mogłaby mieć dane personalne studenta oraz listy ocen z poszczególnych przedmiotów.
W prostym programie nie powinno to robić problemu ;)

Moim zdaniem przy takich założeniach, strukturę programu lepiej był odwzorowywały nie pliki CSV, tylko JSON.

2

@Spine:

Moim zdaniem przy takich założeniach, strukturę programu lepiej był odwzorowywały nie pliki CSV, tylko JSON.

Racja ale z CSV od biedy też się da.

Jeżeli przyjmiemy, że jedna linijka oznacza ocenę z danego przedmiotu dla danego studenta np.: id, przedmiot, ocena, student

Pamiętajcie, że to jest zadanie dla początkującej osoby.

3

Excel? ;) Zapewne lepsze narzędzie do tego.

0

screenshot-20211101175254.png
Co w tym robię źle bo nie rozumiem do końca?

1
import pandas as pd
df = pd.read_csv('C:\\Users\\48696\\Desktop\\oceny.csv')

\ to ogólnie początek znaku specjalnego, a \U to początek sekwencji kodu Unicode.

0

screenshot-20211101235930.png mam jeszcze jedno pytanie, bo naprawdę jestem zielona w pythona i nie wiem co mogę zrobić, żeby te dane nie były tak zlane?

0

Standardowo w plikach CSV dane są rozdzielone przecinkami (CSV - Comma-separated values).
Jeśli w pliku używany jest inny separator, to trzeba o tym poinformować parser.
https://stackoverflow.com/questions/24606330/how-to-read-a-file-with-a-semi-colon-separator-in-pandas

0

Udało mi się wczytać plik csv, wychodzi ładna tabela z danymi, jednak przez mój mały rozum do programowania powstał kolejny problem. A mianowicie nie wiem jak rozpisać żeby program liczył średnią dla danego ucznia. We wczytanym pliku jest tabela gdzie nazwy kolumn są przedmiotami a wiersze reprezentują uczniów. Czy mogę prosić o jakąś wskazówkę i podpowiedź czy jest to możliwe?

0

Musisz przejść przez wszystkie wiersze z danymi. Dla każdego wiersza musisz policzyć średnią na podstawie wartości kolumn z ocenami. Sumujesz wszystkie oceny i dzielisz je przez ilość ocen.

Oceny są tekstowe, więc każdą ocenę musisz skonwertować do liczby.

suma += int(ocena)

Potem dla pewności, żeby średnia była poprawna, konwertujemy liczby całkowite do zmiennoprzecinkowych:

srednia = float(suma)/float(ilosc_ocen)
0

@PoczątkującyProgramista: pytanie jak sobie to przechowujesz w aplikacji.

Można by było podejść do tego w taki sposób, że masz klasę LessonJournal, klasa ta posiada dwie listy: List<Student> i List<Subject>. Klasa Subject mogłaby posiadać listę ocen a sama ocena by miała w sobie, za co ona jest, dla kogo oraz wartość, dodatkowo też by była nazwa przedmiotu.

Mając coś takiego można na streamach policzyć average() dla każdego studenta.

To tak na szybko.

1 użytkowników online, w tym zalogowanych: 0, gości: 1