Jak usprawnić swój projekt?

Jak usprawnić swój projekt?
Konrado777
  • Rejestracja:ponad 2 lata
  • Ostatnio:4 miesiące
  • Postów:75
0

Witam wszystkich
Prosiłbym bardziej doświadczonych kolegów i koleżanki w wyrażeniu opinii dotyczącej mojego programu ,a dokładnie struktury danych.

Mój początkowy projekt programu dotyczy tematyki analizy meczów piłki nożnej.
Dane wejściowe pobieram z pliku excela.
Wybieram sobie jaką chce analizować ligę z listy ,którą mam w excelu jak i w excelu posiadam dane archiwalne jak i obecne do wybranej ligi.

Importuje je do programu i obrabiam ,aby wyodrębnić interesujące mnie dane:
Drużyna A i B jak i wynik.

Korzystając zmiennych usuwam duplikaty i tworzę listę zespołów reprezentujących daną ligę niech będzie przykładowo Anglia gdzie gra 20 zespołów.
Na podstawie mam 20 zmiennych gdzie każda reprezentuje nazwę drużyny.
W zmiennych :
"dr1" - nazwa zespołu ,a w kolejnych fazach programu dopisuje do tej listy dla danego zespołu sumy pkt ,goli ilość wygranych przegranych.
Dane z tej zmiennej są przetwarzane chociażby na tabele wg definicji funkcji na ranking.
"dr1gp" - przechowuje wszystkie bramki strzelone dla drużyny nr1 wg meczy rozegranych czy w tym sezonie czy wg wyboru łącznie np z 5 ostatnich sezonów.
"dr1gm" - gole stracone
"dr1pkt" -wg napisanej definicji funkcji przydzielam punkty
"dr1rywale"- wykaz rywali z jakimi dr1 rywalizowało w określonej liczbie meczów
"dr1handi" - marginesy jakimi mecze zakończyły się
te zmienne dotyczą tylko jednej drużyny i danych rozegranych razem.
Do tego mam dane zapisane w zmiennych dla meczów rozegranych w domu czy na wyjeździe.:
"dr1gpd"
"dr1gpw"
...itp jak wyżej
dla każdej drużyny potrzebuje utworzyć minimum 15-20 zmiennych do przechowywania danych jak i kolejnych obliczeń ,które są potrzebne do analizy.

Mnożąc te 15-20 razy ilość zespołów w lidze wychodzi już 300-500 zmiennych.
W takiej formie zapisane dane w listach są dość łatwe do przetwarzania i tworzenia różnych obliczeń,
Również nie ma problemu z wyjmowaniem danych interesujących mnie np jaki był wynik zespołu A 10 meczów temu co przy ułożeniu listy daje łatwy dostęp do niej,
Kolejne obliczenia dopisuje do zmiennej "dr1" dla drużyny pierwszej i wiem pod jakim indexem jaki wynik się kryje i czego dotyczy.
Moje definicje funkcji chociażby na wygenerowanie rankingu.

Moje pytanie brzmi w jaki sposób usprawnić przechowywanie i dostęp do danych ,aby nie korzystać z kilkuset czy nawet tysiąca zmiennych??
Czy duże programy operujące na danych wymagają bardzo wielu zmiennych czy jednak inaczej rozwiązuje się takie zagadnienia?

Jak potrzebuje obliczać jakiś obliczeń to do wywoływania definicji funkcji muszę podać dla 20 zespołów minim 20 zmiennych. Czy jest jakaś reguła czy skrót ,aby wywołać zmienne do definicji funkcji poprzez jakąś dynamikę?

Wiem ,że można rozpakować argumenty funkcji z listy ,ale to działa dla danych liczbowych jeśli funkcja ich potrzebuje ,ale zakładając ,że chce obliczać funkcją chociaż punkty dla każdej drużyny i przypisywać je do zmiennej dla każdej drużyny to potrzebuje już podać 20 zmiennych do zapisu dla każdej drużyny i nie wiem czy idę w dobrym kierunku czy jednak przebudować wszystko.

Nie krytykujcie mnie od razu ,że zrobiłem to czy tamto źle ,bo nie jestem zawodowym programistą ,a Pythona przerabiam niecały miesiąc tworząc swój pierwszy projekt cegiełka po cegiełce tylko nie wiem czy deklarowanie takiej liczby zmiennej nie jest zbytnio przeciążające i to deklarowanie wywołania definicji funkcji dla dużej liczby zmiennych jest ok.

Pozdrawiam i liczę na ciekawe podpowiedzi pomocne w rozwiązaniu tego problemu..

edytowany 1x, ostatnio: Riddle
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około 2 godziny
  • Postów:8423
5

Myślę, że powinieneś się zainteresować słownikami albo obiektami(więc i klasami), bo zarówno słowniki jak i obiekty pozwalają na grupowanie zmiennych.

Ponadto - zwróć uwagę, że listy mogą być zagnieżdżone. Również możesz mieć w liście słowniki albo w słownikach listy (nie wiem, czy ci takie zagnieżdżanie będzie potrzebne, wskazuję tylko na możliwości, jakie masz w języku. Nie jesteś ograniczony do samych płaskich list). Podobnie w obiektach też możesz mieć listy i słowniki, a w listach i słownikach obiekty

Mnożąc te 15-20 razy ilość zespołów w lidze wychodzi już 300-500 zmiennych.

a nie możesz tego zamienić na listę, gdzie każdy element listy to jakiś tam słownik(albo obiekt) z danymi reprezentujący dany zespół?

W takiej formie zapisane dane w listach są dość łatwe do przetwarzania i tworzenia różnych obliczeń,

Też prawda, ale możesz to wykorzystać również do tego, żeby nie robić tylu zmiennych.


edytowany 4x, ostatnio: LukeJL
Konrado777
Konrado777
Witaj. Myślę nad słownikami i pewnie pójdę w tym kierunku tylko muszę to sprytnie wymyślić ,aby nie rzucać sobie kłód pod nogi z utrudnianiem dostępu do danych. Pozdrawiam i dzięki za zainteresowanie.
Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 23 godziny
  • Postów:1607
5

Nie ukrywam, że jakbym spotkał w projekcie zmienną o nazwe dr1gpw to bym się lewą nogą przez prawe ramię przeżegnał…

A ponadto, to LukeJL bardzo mądrze pisze — popatrz, jakie są struktury danych w Pythonie, popróbuj z nimi, i jak Ci już naprawdę żadna nie podejdzie, to wtedy możesz rozważyć zrobienie swoich własnych klas agregujących.

LukeJL
ja patrzę na dr1gpw i myślę doktor 1 giełda papierów wartościowych.
Althorion
Moje pierwsze skojarzenie to było coś na modłę „distance rating 1 ground proximity warning”.
LukeJL
każdy ma inne skojarzenia ;)
Althorion
Oj tak. W każdym razie, nawet po wyjaśnieniu autora, od czego to ma stać, to dalej nie wiem, jak się „gole strzelone na wyjeździe” skracają do tego dr1gpw. Znaczy, zgaduję że g stoi od „gole”, w od „wyjeździe”, ale reszta? 🤷
LukeJL
"dr1gm" - gole stracone - czyli domyślam się, że m oznacza "missed". Chociaż dla mnie to i tak doktor 1 game master.
Konrado777
Konrado777
Wyjaśnie wam bo robicie takie oczy jakby to były tajemne skróty. Dr1 - drużyna pierwsza. Gp - gole plus Gm Gole minus końcówka w - wyjazd d - dom . Jest na prawdę nad czym myśleć. Panowie wy nie musicie wiedzieć do czego służy jaka zmienna ważne ,że ja wiem. Inna sprawa jakbym sam nie wiedział
LukeJL
@Konrado777 no jak prosisz o pomoc na forum, to nie szanujesz czasu innych robiąc takie tajemnicze skróty.
Konrado777
Konrado777
@LukeJL: szanuję Cię za zainteresowanie i odpowiedź na temat struktury, Czy ja prosiłem o rozszyfrowywanie skrótów bo nie wiem do czego służą i czemu je napisałem? Z mojej strony to wygląda tak - paru cwaniaków co umie programować nabija się z amatora i robi sobie podśmiechawy z nazewnictwa które autor nazwał i widocznie miał cel ,aby tak zrobić.
Konrado777
Konrado777
Z tego co patrzę wszystkie zmienne zostały na samej górze opisane więc nadal nie rozumiem tych wywodów z waszej strony. Czyli to wyraz pychy co na tym forum jest na porządku dziennym, Nawet jak ludzie piszą w dziale oferty pracy ,że zrobią jakiś projekt to zaraz jakiś uczony z grona lajkujących ten post poucza autora jak ma żyć. Przeczytaj ostanie zdanie z mojego postu i zastanów się czemu je napisałem, Napisałem je właśnie ze względu na takie wioskowe wpisy.
LukeJL
@Konrado777: no właśnie implicite prosiłeś o rozszyfrowanie skrótów, ponieważ bez tego ciężko zrozumieć kontekst (ale i tak starałem się. Tak jak napisałem - moim zdaniem próbujesz zrobić coś na płaskich listach, co lepiej byłoby zrobić na słownikach, może zagnieżdżonych listach itp.). Tym niemniej to, co napisałeś, jest dla mnie częściowo niejasne właśnie przez te dziwne skróty.
Konrado777
Konrado777
@LukeJL: i przyznałem Ci rację ,bo oczekiwałem takiej porady.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.