Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # zunanji moduli
- import json
- from decimal import Decimal
- # moje funkcije, definiramo jih vnaprej
- def nadaljujem():
- is_naprej = "d"
- is_naprej = input("Nadaljujemo d/n ?: ")
- if is_naprej == "d":
- return True
- else:
- return False
- def izpis_enizdelek():
- # formatiramo variable na dve decimalki,
- # da ne dobimo float recimo 2.000000000000003
- dizracun_B = round(Decimal(izracun_B),2)
- dizracun_OH = round(Decimal(izracun_OH),2)
- dizracun_M = round(Decimal(izracun_M),2)
- # izpis
- print('') # empty line
- print("IZDELEK: " + ime_izdelka + " " + "\nKOLIČINA: " + str(kolicina) + "x")
- print("B = " + str(dizracun_B) + " g")
- print("OH = " + str(dizracun_OH) + " g")
- print("M = " + str(dizracun_M) + " g")
- print('') # empty line
- # ----------------------------------------
- # hranilne vrednosti
- # to bi kasneje lahko dali v stalno datoteko ali bazo podatkov
- jajca_1kom_B = 6.8
- jajca_1kom_OH = 0.4
- jajca_1kom_M = 5.9
- banana_1kom_B = 1.2
- banana_1kom_OH = 21.1
- banana_1kom_M = 0.3
- whey_100g_B = 70
- whey_100g_OH = 12.3
- whey_100g_M = 6.3
- mleko_100g_B = 3.3
- mleko_100g_OH = 4.6
- mleko_100g_M = 3.5
- mandlji_100g_B = 21.1
- mandlji_100g_OH = 21.6
- mandlji_100g_M = 52.1
- lesniki_100g_B = 15
- lesniki_100g_OH = 16.7
- lesniki_100g_M = 60.7
- krompir_100g_B = 2.1
- krompir_100g_OH = 20.8
- krompir_100g_M = 0.1
- riz_100g_B = 3.3
- riz_100g_OH = 34.3
- riz_100g_M = 0.5
- piscanec_100g_B = 23
- piscanec_100g_OH = 0
- piscanec_100g_M = 1.3
- skuta_100g_B = 14
- skuta_100g_OH = 3
- skuta_100g_M = 2.5
- kosmici_100g_B = 13.5
- kosmici_100g_OH = 58.7
- kosmici_100g_M = 7
- tuna_konzerva_1kom_B = 8.3
- tuna_konzerva_1kom_OH = 0
- tuna_konzerva_1kom_M = 18.7
- ananas_100g_B = 0
- ananas_100g_OH = 12
- ananas_100g_M = 1
- melona_100g_B = 0.8
- melona_100g_OH = 8.2
- melona_100g_M = 0.2
- smoothie_1_B = 44.3
- smoothie_1_OH = 63.8
- smoothie_1_M = 10.8
- smoothie_2_B = 37.5
- smoothie_2_OH = 37.5
- smoothie_2_M = 11.6
- # sporočimo uporabniku, za kaj gre
- print("Program zna izračunati prehranske vrednosti za naslednje izdelke:\n- jajca \n- banana \n- whey\n- mleko \n- mandlji \n- lešniki\n- krompir \n- riž \n- piščanec\n- tuna konzerva (neto = 52g, z odlitim oljem!) \n- ananas \n- melona\n- smoothie 1 (SKUTA 250g + KOSMIČI 60g + 1x BANANA)\n- smoothie 2 (MLEKO 250g + WHEY 40g + 1x BANANA)")
- print('') #empty line
- print("Najprej boste izbrali hrano, nato pa še količino hrane. Program vam bo izračunal koliko beljakovin, ogljikovih hidratov in maščob boste zaužili v takšnem obroku.")
- print('') #empty line
- # sedaj gremo v neskončno zanko
- # inicializiramo (nastavimo) variable
- is_naprej = "d"
- is_error = False
- # prazna lista za posamezne preračune
- myList = []
- while is_naprej:
- # tu nehamo, če se uporabnik tako odloči
- is_naprej = nadaljujem()
- is_error = False
- if is_naprej == False:
- break
- ime_izdelka = input("Vpiši ime izdelka: ")
- # ----- sedaj imamo različne preračune za posamezne izdelke -----
- # ----------------------------------------------------------------
- if ime_izdelka == "jajca":
- kolicina = int(input("Koliko jajc: "))
- izracun_B = kolicina * jajca_1kom_B
- izracun_OH = kolicina * jajca_1kom_OH
- izracun_M = kolicina * jajca_1kom_M
- izpis_enizdelek()
- elif ime_izdelka == "banana":
- kolicina = int(input("Koliko banan: "))
- izracun_B = kolicina * banana_1kom_B
- izracun_OH = kolicina * banana_1kom_OH
- izracun_M = kolicina * banana_1kom_M
- izpis_enizdelek()
- elif ime_izdelka == "whey":
- kolicina = int(input("Koliko gramov: "))
- izracun_B = ((kolicina * whey_100g_B) / 100)
- izracun_OH = ((kolicina * whey_100g_OH) / 100)
- izracun_M = ((kolicina * whey_100g_M) / 100)
- izpis_enizdelek()
- elif ime_izdelka == "mleko":
- kolicina = int(input("Koliko gramov: "))
- izracun_B = ((kolicina * mleko_100g_B) / 100)
- izracun_OH = ((kolicina * mleko_100g_OH) / 100)
- izracun_M = ((kolicina * mleko_100g_M) / 100)
- izpis_enizdelek()
- else:
- print("")
- print("Nepravilno ste vnesli ime hrane.")
- is_error = True
- # vpišemo rezultat v listo myList
- # ampak ne vpisujemo, če se je uporabnik zmotil (nepravilno vnesel ime hrane)
- if is_error == False:
- # zaokrožimo na dve decimalki
- dizracun_B = round(izracun_B, 2)
- dizracun_OH = round(izracun_OH, 2)
- dizracun_M = round(izracun_M, 2)
- # najprej vse rezultate združiš v slovar
- rezultati = {"izdelek": ime_izdelka, "kolicina": kolicina, \
- "izr_B": dizracun_B, "izr_OH": dizracun_OH, \
- "izr_M": dizracun_M}
- # sedaj dodamo ta slovar v myList
- myList.append(rezultati)
- # test
- # print(myList)
- # konec zanke
- # ------------- natisnemo celo listo kot tabelo
- # koliko zapisov imamo
- nelementov = len(myList)
- # če lista ni prazna
- if nelementov > 0:
- # inicializiranje var za total
- tot_izB = 0
- tot_izO = 0
- tot_izM = 0
- print(" ")
- print("Vrednosti vse preračunane hrane (g):")
- print('===========================================')
- my_header = "Izdelek Kol. B OH M"
- # .......... ..... ..... ..... .....
- print(my_header)
- for x in range(0, nelementov):
- # my_data je dictionary znotraj liste myList
- my_data = myList[x]
- # zaradi preglednosti naložimo posamezne dele v začasne variable
- # števila zaokrožimo na 2 decimalki, da se bodo lepo podpisovala
- my_izd = my_data["izdelek"]
- my_kol = my_data["kolicina"]
- my_izB = my_data["izr_B"]
- my_izO = my_data["izr_OH"]
- my_izM = my_data["izr_M"]
- # total
- tot_izB = tot_izB + my_izB
- tot_izO = tot_izO + my_izO
- tot_izM = tot_izM + my_izM
- # oblikujemo izpis - natančno formatiranje stringa je kar zpleteno
- # bom še razložil
- my_values = "{0:10} {1:>5.0f} {2:>5.2f} {3:>5.2f} {4:>5.2f}".format(my_izd, my_kol, my_izB, my_izO, my_izM)
- print(my_values)
- # sedaj vpišemo še total
- print('===========================================')
- # "Izdelek - Količina - B - OH - M"
- my_totalstring = "{0:10} {1:5} {2:5.2f} {3:5.2f} {4:5.2f}".format("TOTAL ", " ", tot_izB, tot_izO, tot_izM)
- print (my_totalstring)
- # ---------- KONEC tabele
- # po želji lahko vse vpišemo še v fajl jedilniki.txt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement