Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

import datetime import sys def kysyTiedostonimi ( tyyppi ) : tiedoston _ nimi = input ( f Anna { tyyppi } tiedoston nimi:

import datetime
import sys
def kysyTiedostonimi(tyyppi):
tiedoston_nimi = input(f"Anna {tyyppi} tiedoston nimi: ")
return tiedoston_nimi
def lueTiedosto(tiedoston_nimi, tiedot):
tiedosto = None
try:
tiedosto = open(tiedoston_nimi, 'r', encoding="UTF-8")
tiedot = tiedosto.readlines()
tiedosto.close()
print(f"Tiedostosta '{tiedoston_nimi}' listtiin listaan {len(tiedot)-1} datarivi.")
return tiedot
except OSError:
print(f"Tiedoston '{tiedoston_nimi}' ksittelyss virhe, lopetetaan.")
sys.exit()
return None
def analysoiTiedot(tiedot, tulokset):
if not tiedot:
print("Ei tietoja analysoitavaksi, lue tiedot ennen analyysi.")
print("")
return None
kuukausittaiset_summat ={}
kokonaiskavijat =0
paivittaiset_kavijat =[]
for rivi in tiedot[1:]:
tiedot_rivi = rivi.strip().split(';')
pvm = datetime.datetime.strptime(tiedot_rivi[0],"%d.%m.%Y")
paivittaiset_kavijat.append(sum(int(tiedot_rivi[i]) for i in range(1, len(tiedot_rivi))))
kokonaiskavijat += sum(int(tiedot_rivi[i]) for i in range(1, len(tiedot_rivi)))
kuukausittaiset_summat[pvm.month]= kuukausittaiset_summat.get(pvm.month, 0)+ sum(int(tiedot_rivi[i]) for i in range(1, len(tiedot_rivi)))
keskiarvo = round(kokonaiskavijat / len(paivittaiset_kavijat),1)
max_kavijat = max(paivittaiset_kavijat)
max_paiva = tiedot[paivittaiset_kavijat.index(max_kavijat)+1].split(';')[0]
min_kavijat = min(paivittaiset_kavijat)
min_paiva = tiedot[paivittaiset_kavijat.index(min_kavijat)+1].split(';')[0]
tulokset =[kokonaiskavijat, keskiarvo, max_kavijat, max_paiva, min_kavijat, min_paiva, kuukausittaiset_summat, paivittaiset_kavijat]
return tulokset
def kirjoitaTiedosto(tulokset, paivittaiset_kavijat):
tiedoston_nimi = kysyTiedostonimi("kirjoitettavan")
try:
with open(tiedoston_nimi, 'w', encoding="UTF-8") as tiedosto:
tiedosto.write(f"Analyysin tulokset {len(paivittaiset_kavijat)} pivlt ovat seuraavat:
")
tiedosto.write(f"Kvijmr koko vuonna yhteens oli {tulokset[0]}.
")
tiedosto.write(f"Pivittinen kvijmr oli keskimrin {tulokset[1]}.
")
tiedosto.write(f"Eniten kvijit oli {tulokset[3]},{tulokset[2]} kpl.
")
tiedosto.write(f"Vhiten kvijit oli {tulokset[5]},{tulokset[4]} kpl.
")
tiedosto.write("
")
tiedosto.write("Kuukausittaiset kvijmrt (Kk;Lukumr):
")
for kuukausi, maara in tulokset[6].items():
tiedosto.write(f"Kk {kuukausi:02d};{maara}
")
print(f"Tiedosto '{tiedoston_nimi}' kirjoitettu.")
tiedosto.close()
return None
except OSError:
print(f"Tiedoston '{tiedoston_nimi}' ksittelyss virhe, lopetetaan.")
sys.exit()
return None
def valikko():
print("Valitse haluamasi toiminto:")
print("1) Lue tiedosto")
print("2) Analysoi")
print("3) Kirjoita tiedosto")
print("0) Lopeta")
valinta = input("Anna valintasi: ")
return valinta
def paaohjelma():
tiedot =[]
paivittaiset_kavijat =[]
tulokset =[]
while True:
valinta = valikko()
if valinta =='1':
tiedoston_nimi = kysyTiedostonimi("luettavan")
tiedot = lueTiedosto(tiedoston_nimi, tiedot)
print("")
if tiedot is None:
sys.exit()
elif valinta =='2':
tulokset = analysoiTiedot(tiedot, tulokset)
if tulokset:
print("Tilastotietojen analyysi suoritettu.")
print("Kuukausittaiset summat laskettu.")
paivittaiset_kavijat = tulokset[-1]
print("")
elif valinta =='3':
if not tulokset or not paivittaiset_kavijat:
print("Ei tietoja tallennettavaksi, analysoi tiedot ennen tallennusta.")
print("")
else:
kirjoitaTiedosto(tulokset, paivittaiset_kavijat)
print("")
elif valinta =='0':
print("Lopetetaan.")
print("")
print("Kiitos ohjelman kytst.")
break
else:
print("Tuntematon valinta, yrit uudestaan.")
print("")
tiedot.clear()
paivittaiset_kavijat.clear()
tulokset.clear()
return None
paaohjelma()

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Expert Performance Indexing In SQL Server

Authors: Jason Strate, Grant Fritchey

2nd Edition

1484211189, 9781484211182

More Books

Students also viewed these Databases questions

Question

Define offboarding. Why is it important?

Answered: 1 week ago