Tässä on Sqlite-kirjastolla tehty tehtavalista. Tietokantaan tallennetaan tehtävä, myöhästyminen ja tärkeysaste. Lisäksi poluksi tehdään kumulatiivinen myöhästymispalkit.
import datetime from datetime import datetime import sqlite3 import matplotlib.pyplot as plt import numpy as np from itertools import accumulate from operator import add #Otetaan yhteys tietokantaan try: conn = sqlite3.connect('aika.db') except: print("Ei onnistunut") myohassaSumma = [] ajoissaSumma = [] jatko = 1 print("Anna vuosi") vuosi = int(input()) print("Anna kuukausi") kuukausi = int(input()) print("Anna kuukauden päivä") paiva = int(input()) while (jatko == 1): #Syötetään tehtävän nimi, tärkeysaste ja deadline. #Katsotaan, sitten kuinka paljon tehtävä on myöhässä nyt = datetime.now() print("Syötä tehtävän nimi") tehtava = input() print("Onko tehtävä tärkeä 1) kyllä") tarkea = int(input()) print("Anna tunti") tunti = int(input()) print("Anna minuutti") minuutti = int(input()) sitten = datetime(vuosi,kuukausi,paiva,tunti,minuutti,0); erotus = (nyt-sitten).total_seconds() myohassa = "" tarkeys = "" #Katsotaan, kuinka paljon tehtävä on myöhässä tunnit = divmod(erotus,3600)[0] if (erotus > 0): myohassa = "Myöhässä" ajoissaSumma.append(0) myohassaSumma.append(tunnit*60+minuutit) else: minuutit = divmod(erotus,60)[0]-(abs(tunnit)+1)*60 myohassa = "Ajoissa" tunnit += 1 tunnit = abs(tunnit) myohassaSumma.append(0) ajoissaSumma.append(tunnit*60+minuutit) if (tarkeys == 1): tarkeys = "Tärkeä" else: tarkea = "Ei tärkeä" #Tallennetaan tietokantaan. lista = [] lista.append(tehtava) lista.append(tarkeys) lista.append(myohassa) lista.append(tunnit) lista.append(minuutit) conn.execute("INSERT INTO aika VALUES (?,?,?,?,?)",lista) conn.commit() print("Jatketaanko 1) Kyllä") jatko = int(input()) #Piirretään kaaviot, joka kertoo kumulatiivisesti myöhästäymisen summa1 = [abs(x) for x in ajoissaSumma] summa2 = [abs(x) for x in myohassaSumma] kumulatiivinenAjoissa = list(accumulate(summa1,add)) kumulatiivinenMyohassa = list(accumulate(summa2,add)) print(kumulatiivinenAjoissa) print(kumulatiivinenMyohassa) pituus = len(kumulatiivinenAjoissa) X = np.arange(pituus) fig = plt.figure() ax = fig.add_axes([0,0,1,1]) ax.bar(X,kumulatiivinenAjoissa,color='g', width=0.25) ax.bar(X+0.25,kumulatiivinenMyohassa,color='r', width=0.25) plt.show() conn.close() #Täytyy muistaa sulkea yhteys!
Oletko muuten huomannut, että:
tulosTunti = int(tulos/60) tulosMinuutit = tulos%60
Sijasta voisit käyttää:
tunnit, minuutit = divmod(kokonaisminuutit, 60)
Minulla on sinulle parannusehdotus:
Käytä oikeita standardimuotoisia päivämääriä ja aikoja. Tallenna kuvaus ja aika Sqlite tietokantaan. Rakenna "päättymätön" lista "lennossa" tietokannasta hakemistasi tiedoista.
Ohjelma on muutettu nyt komentorivipohjaiseksi ja siihen on lisätty yhteys tietokantaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.