Skip to content

TKOaly/aantenlaskenta2024

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TKO-äly ry:n ääntenlaskuohjelma

Linkki ääni- ja vaalijärjestykseen: https://www.tko-aly.fi/yhdistys/vaalijarjestys

Ohjelman suoritus

Varmista, että koneellasi on tarpeeksi uusi versio Pythonista (vähintään 3.10).

Asenna ohjelma koneellesi esimerkiksi

  • kloonaamalla gitillä
  • lataamalla Zip-tiedoston Githubista ja purkamalla tiedoston

Avaa komentorivi ja siirry projektin juureen.

Suorita ohjelma komennolla:

  python main.py [vaalitiedosto]

Ohjelma tulostaa näytölle vaalin kulun, ja lisätietoja vaalit-nimiseen kansioon omaan tiedostoonsa.

Muokkaaminen

Ohjelman kehittämisessä on helpointa käyttää Poetry-työkalua.

Aluksi aja ohjelman hakemistossa komento poetry install asentaaksesi vaadittavat riippuvuudet, kuten pytestin.

Testaaminen

  [poetry run] pytest

Koodin jäsentäminen

  [poetry run] ruff format

Tyypityksen tarkistaminen

Varsinaiselle ohjelmalle:

  [poetry run] mypy aantenlaskenta/

Testeille:

  [poetry run] mypy tests/

Kaikkien komentojen pitäisi toimia ilman Poetryäkin, kunhan tarvittavat työkalut on asennettu jotain muuta kautta.

Opavote

Äänestykseen käytetään Opavote-palvelua, josta äänestyksen loputtua saa ladattua äänet ja ehdokkaan sisältävän tiedoston. Tiedosto voi näyttää esimerkiksi tältä:

4 2
1 1 2 3 4 0
1 2 1 3 4 0
1 1 2 3 4 0
1 2 1 3 4 0
0
"Anna A."
"Bruno B."
"Charlie C."
"Daniela D."
"Joku vaali"

Tiedoston tulkitseminen tapahtuu näin:

Ensimmäisellä rivillä on kaksi lukua, ehdokkaiden lukumäärä ja valittavien henkilöiden määrä. Esimerkissä ehdokkaita on siis 4, ja paikkoja 2.

Sitä seuraa itse äänet. Jokainen äänirivi alkaa ykkösellä ja loppuu nollaan, ja niiden välillä sijaitsevat itse äänet. Esimerkiksi ensimmäinen ääni 1 1 2 3 4 0 tarkoittaa siis, että äänestäjä on antanut äänensä järjestyksessä 1, 2, 3, 4, missä numerot viittaavat ehdokkaisiin siinä järjestyksessä, missä ne on tiedoston lopussa ilmoitettu.

Ääniä luetaan niin kauan, kunnes tulee pelkän yhden nollan sisältävä rivi.

Tämän jälkeen seuraa ehdokkaiden nimet. Esimerkissä "Anna A." on numero 1, "Bruno B." numero 2, jne. Kun ehdokkaita on luettu ensimmäisellä rivillä määritellyn määrän verran, ollaan luettu kaikki ehdokkaat.

Viimeisellä rivillä on vielä vaalin nimi. Esimerkissä "Joku vaali"

[ehdokkaiden määrä] [paikkojen määrä]
1 [äänet] 0
1 [äänet] 0
1 [äänet] 0
...
0
"[ehdokas 1]"
"[ehdokas 2]"
"[ehdokas 3]"
...
"[vaalin nimi]"

TODO

Ohjelmassa on vielä vähän asioita mitä voisi parantaa, päällimmäisenä se, ettei se toimi Windowsilla.

Windows-käyttäjille on suositeltavaa käyttää Windows Subsystem for Linuxia.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%