Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- popravki = {'Murska Sobota Rakican': 'Murska Sobota',
- 'Crnomelj Doblice': 'Črnomelj',
- 'Letalisce Edvarda Rusjana Mari': 'Maribor',
- 'Letalisce Jozeta Pucnika Ljubl': 'Brnik',
- 'Ljubljana Bezigrad': 'Ljubljana',
- 'Kocevje': 'Kočevje',
- 'Smartno Pri Slovenj Gradcu': 'Smartno pri Slovenj Gradcu',
- 'Kredarica': 'Kredarica',
- 'Veliki Dolenci': 'Veliki Dolenci',
- 'Novo Mesto': 'Novo mesto',
- 'Nova Vas Na Blokah': 'Bloke',
- 'Celje Medlog': 'Celje',
- 'Portoroz Letalisce': 'Portorož',
- 'Topol Pri Medvodah': 'Topol pri Medvodah',
- 'Ratece Planica': 'Rateče'
- }
- import unittest
- import warnings
- import os
- def kodirnik_postaj():
- kodirnik = {}
- folder_path = 'vreme-po-sloveniji'
- for file in os.listdir(folder_path):
- file_path = os.path.join(folder_path, file)
- stanica = ''
- grad = ''
- with open(file_path, "r") as f:
- csv_reader = csv.reader(f)
- is_first = True
- for row in csv_reader:
- if is_first:
- is_first = False
- continue
- grad = row[5]
- stanica = row[0]
- break
- grad = grad.split(',')[0]
- grad = grad.split(" ")
- new_grad = ''
- for zbor in grad:
- c = zbor[0]
- c = c.upper()
- tmp = zbor.lower()
- new_grad += c
- new_grad += tmp[1:]
- new_grad += " "
- new_grad = new_grad[:-1]
- kodirnik[new_grad] = stanica
- return kodirnik
- def popravi(kodirnik):
- for key, item in popravki.items():
- tmp = kodirnik[key]
- kodirnik.pop(key)
- kodirnik[item] = tmp
- return kodirnik
- def preberi_meritve(ime_postaje, kodirnik):
- folder_path = 'vreme-po-sloveniji'
- file_path_name= kodirnik[ime_postaje] + ".csv"
- file_path = os.path.join(folder_path, file_path_name)
- result_kodirnik = {}
- is_first_row = True
- with open(file_path, "r") as f:
- c = csv.reader(f)
- for row in c:
- if is_first_row:
- is_first_row = False
- continue
- date = row[1].split("-")
- try:
- temp = float(row[10])
- temp /= 10.0
- result_kodirnik[(int(date[0]), int(date[1]), int(date[2]))] = temp
- except ValueError:
- temp = None
- return result_kodirnik
- def mrzli_silvester(podatki):
- najladna_temp = 2000000.0
- najladna_godina = -1
- for godina in range(1900, 2023):
- if (godina, 12, 31) in podatki:
- temp = podatki[(godina, 12, 31)]
- if temp <= najladna_temp:
- najladna_temp = temp
- najladna_godina = godina
- return najladna_godina
- class Test(unittest.TestCase):
- def setUp(self):
- warnings.simplefilter("ignore", ResourceWarning)
- def test_01_kodirnik_postaj(self):
- self.assertEqual({'Bilje': 'SIE00115106',
- 'Celje Medlog': 'SIE00115176',
- 'Crnomelj Doblice': 'SIE00114856',
- 'Kocevje': 'SIE00114956',
- 'Kredarica': 'SIE00105938',
- 'Lesce': 'SIE00114966',
- 'Letalisce Edvarda Rusjana Mari': 'SIE00115156',
- 'Letalisce Jozeta Pucnika Ljubl': 'SIE00115146',
- 'Lisca': 'SIE00115186',
- 'Ljubljana Bezigrad': 'SIM00014015',
- 'Murska Sobota Rakican': 'SIE00115196',
- 'Nova Vas Na Blokah': 'SIE00115066',
- 'Novo Mesto': 'SIE00115126',
- 'Portoroz Letalisce': 'SIE00115166',
- 'Postojna': 'SIE00115076',
- 'Ratece Planica': 'SIE00115206',
- 'Smartno Pri Slovenj Gradcu': 'SIE00115136',
- 'Topol Pri Medvodah': 'SIE00115006',
- 'Veliki Dolenci': 'SIE00115096',
- 'Vojsko': 'SIE00115016'}
- , kodirnik_postaj())
- def test_02_popravki(self):
- kodirnik = {'Bilje': 'SIE00115106',
- 'Celje Medlog': 'SIE00115176',
- 'Crnomelj Doblice': 'SIE00114856',
- 'Kocevje': 'SIE00114956',
- 'Kredarica': 'SIE00105938',
- 'Lesce': 'SIE00114966',
- 'Letalisce Edvarda Rusjana Mari': 'SIE00115156',
- 'Letalisce Jozeta Pucnika Ljubl': 'SIE00115146',
- 'Lisca': 'SIE00115186',
- 'Ljubljana Bezigrad': 'SIM00014015',
- 'Murska Sobota Rakican': 'SIE00115196',
- 'Nova Vas Na Blokah': 'SIE00115066',
- 'Novo Mesto': 'SIE00115126',
- 'Portoroz Letalisce': 'SIE00115166',
- 'Postojna': 'SIE00115076',
- 'Ratece Planica': 'SIE00115206',
- 'Smartno Pri Slovenj Gradcu': 'SIE00115136',
- 'Topol Pri Medvodah': 'SIE00115006',
- 'Veliki Dolenci': 'SIE00115096',
- 'Vojsko': 'SIE00115016'}
- popravi(kodirnik)
- self.assertEqual({'Bilje': 'SIE00115106',
- 'Bloke': 'SIE00115066',
- 'Brnik': 'SIE00115146',
- 'Celje': 'SIE00115176',
- 'Kočevje': 'SIE00114956',
- 'Kredarica': 'SIE00105938',
- 'Lesce': 'SIE00114966',
- 'Lisca': 'SIE00115186',
- 'Ljubljana': 'SIM00014015',
- 'Maribor': 'SIE00115156',
- 'Murska Sobota': 'SIE00115196',
- 'Novo mesto': 'SIE00115126',
- 'Portorož': 'SIE00115166',
- 'Postojna': 'SIE00115076',
- 'Rateče': 'SIE00115206',
- 'Smartno pri Slovenj Gradcu': 'SIE00115136',
- 'Topol pri Medvodah': 'SIE00115006',
- 'Veliki Dolenci': 'SIE00115096',
- 'Vojsko': 'SIE00115016',
- 'Črnomelj': 'SIE00114856'}, kodirnik)
- def test_03_preberi_meritve(self):
- kodirnik = kodirnik_postaj()
- popravi(kodirnik)
- podatki = preberi_meritve("Kredarica", kodirnik)
- self.assertAlmostEqual(14.4, podatki[(2023, 8, 13)])
- self.assertAlmostEqual(11.1, podatki[(2023, 10, 1)])
- self.assertNotIn((2023, 10, 4), podatki)
- def test_04_mrzli_silvester(self):
- kodirnik = kodirnik_postaj()
- popravi(kodirnik)
- podatki = preberi_meritve("Kredarica", kodirnik)
- self.assertEqual(1968, mrzli_silvester(podatki))
- podatki = preberi_meritve("Črnomelj", kodirnik)
- self.assertEqual(1996, mrzli_silvester(podatki))
- podatki = preberi_meritve("Ljubljana", kodirnik)
- self.assertEqual(1906, mrzli_silvester(podatki))
- podatki = preberi_meritve("Bloke", kodirnik)
- self.assertEqual(1996, mrzli_silvester(podatki))
- podatki = preberi_meritve("Bilje", kodirnik)
- self.assertEqual(1996, mrzli_silvester(podatki))
- if __name__ == "__main__":
- unittest.main()
Advertisement
Add Comment
Please, Sign In to add comment