Answered step by step
Verified Expert Solution
Question
1 Approved Answer
import datetime import sys def kysyTiedostonimi ( tyyppi ) : tiedoston _ nimi = input ( f Anna { tyyppi } tiedoston nimi:
import datetime
import sys
def kysyTiedostonimityyppi:
tiedostonnimi inputfAnna tyyppi tiedoston nimi:
return tiedostonnimi
def lueTiedostotiedostonnimi, tiedot:
tiedosto None
try:
tiedosto opentiedostonnimi, r encoding"UTF
tiedot tiedosto.readlines
tiedosto.close
printfTiedostosta tiedostonnimi listtiin listaan lentiedot datarivi
return tiedot
except OSError:
printfTiedoston tiedostonnimi ksittelyss virhe, lopetetaan."
sysexit
return None
def analysoiTiedottiedot tulokset:
if not tiedot:
printEi tietoja analysoitavaksi, lue tiedot ennen analyysi
print
return None
kuukausittaisetsummat
kokonaiskavijat
paivittaisetkavijat
for rivi in tiedot::
tiedotrivi rivi.stripsplit;
pvm datetime.datetime.strptimetiedotrividmY
paivittaisetkavijat.appendsuminttiedotrivii for i in range lentiedotrivi
kokonaiskavijat suminttiedotrivii for i in range lentiedotrivi
kuukausittaisetsummatpvmmonth kuukausittaisetsummat.getpvmmonth, suminttiedotrivii for i in range lentiedotrivi
keskiarvo roundkokonaiskavijat lenpaivittaisetkavijat
maxkavijat maxpaivittaisetkavijat
maxpaiva tiedotpaivittaisetkavijat.indexmaxkavijatsplit;
minkavijat minpaivittaisetkavijat
minpaiva tiedotpaivittaisetkavijat.indexminkavijatsplit;
tulokset kokonaiskavijat keskiarvo, maxkavijat, maxpaiva, minkavijat, minpaiva, kuukausittaisetsummat, paivittaisetkavijat
return tulokset
def kirjoitaTiedostotulokset paivittaisetkavijat:
tiedostonnimi kysyTiedostonimikirjoitettavan
try:
with opentiedostonnimi, w encoding"UTF as tiedosto:
tiedosto.writefAnalyysin tulokset lenpaivittaisetkavijat pivlt ovat seuraavat:
tiedosto.writefKvijmr koko vuonna yhteens oli tulokset
tiedosto.writefPivittinen kvijmr oli keskimrin tulokset
tiedosto.writefEniten kvijit oli tuloksettulokset kpl
tiedosto.writefVhiten kvijit oli tuloksettulokset kpl
tiedosto.write
tiedosto.writeKuukausittaiset kvijmrt Kk;Lukumr:
for kuukausi, maara in tuloksetitems:
tiedosto.writefKk kuukausi:d;maara
printfTiedosto tiedostonnimi kirjoitettu."
tiedosto.close
return None
except OSError:
printfTiedoston tiedostonnimi ksittelyss virhe, lopetetaan."
sysexit
return None
def valikko:
printValitse haluamasi toiminto:"
print Lue tiedosto"
print Analysoi"
print Kirjoita tiedosto"
print Lopeta"
valinta inputAnna valintasi:
return valinta
def paaohjelma:
tiedot
paivittaisetkavijat
tulokset
while True:
valinta valikko
if valinta :
tiedostonnimi kysyTiedostonimiluettavan
tiedot lueTiedostotiedostonnimi, tiedot
print
if tiedot is None:
sysexit
elif valinta :
tulokset analysoiTiedottiedot tulokset
if tulokset:
printTilastotietojen analyysi suoritettu."
printKuukausittaiset summat laskettu."
paivittaisetkavijat tulokset
print
elif valinta :
if not tulokset or not paivittaisetkavijat:
printEi tietoja tallennettavaksi, analysoi tiedot ennen tallennusta."
print
else:
kirjoitaTiedostotulokset paivittaisetkavijat
print
elif valinta :
printLopetetaan
print
printKiitos ohjelman kytst
break
else:
printTuntematon valinta, yrit uudestaan."
print
tiedot.clear
paivittaisetkavijat.clear
tulokset.clear
return None
paaohjelma
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started