Lekcja 15 - Nikola Horn
Projekt końcowy - Kalkulator VAT dla paczek z Japonii
import requests
import tkinter as tk
import customtkinter as ctk
parametry = {"amount": 1, "from": "JPY", "to": "PLN"}
jeny = requests.get("https://api.frankfurter.app/latest", params=parametry)
odczytanajpy = jeny.json()
jen=odczytanajpy["rates"]["PLN"]
parametryeuro = {"amount": 150, "from": "EUR", "to": "PLN"}
euro = requests.get("https://api.frankfurter.app/latest", params=parametryeuro)
odczytanaeur = euro.json()
czyclo=odczytanaeur["rates"]["PLN"]
okno = ctk.CTk()
okno.title("Kalkulator VAT dla paczek z Japonii")
ctk.set_appearance_mode("dark")
ctk.set_widget_scaling(1.1)
def przelicz1():
kwota = int(wprowadz.get())
kwotavat = round((kwota * 23) /100, 2)
if kwota == 0:
clo.configure(text=f"""Nie podałeś kwoty.""")
elif kwota >= czyclo:
przeliczone.configure(text=f"Kwota twojego zamówienia to {kwota} zł. \n Zapłacisz {kwotavat} zł podatku VAT + 8,50 zł opłaty pocztowej (´⊙ω⊙`)!")
clo.configure(text=f"""Kwota zamówienia przekracza 150 EUR ({czyclo} zł).
Możliwe oclenie paczki ಥ‿ಥ""")
else:
przeliczone.configure(text=f"Kwota twojego zamówienia to {kwota} zł. \n Zapłacisz {kwotavat} zł podatku VAT + 8,50 zł opłaty pocztowej (´⊙ω⊙`)!")
clo.configure(text=f"Kwota zamówienia nie przekracza 150 EUR ({czyclo} zł). \n Nie musisz płacić cła ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ")
def przelicz2():
kwotajpy = int(wprowadz.get())
kwota = kwotajpy*jen
kwotavat = round((kwota * 23) /100, 2)
if kwota == 0:
clo.configure(text=f"""Nie podałeś kwoty.""")
elif kwota >= czyclo:
przeliczone.configure(text=f"Kwota twojego zamówienia to {kwota} zł. \n Zapłacisz {kwotavat} zł podatku VAT + 8,50 zł opłaty pocztowej (´⊙ω⊙`)!")
clo.configure(text=f"Kwota zamówienia przekracza 150 EUR ({czyclo} zł). \n Możliwe oclenie paczki ಥ‿ಥ")
else:
przeliczone.configure(text=f"Kwota twojego zamówienia to {kwota} zł. \n Zapłacisz {kwotavat} zł podatku VAT + 8,50 zł opłaty pocztowej (´⊙ω⊙`)!")
clo.configure(text=f"Kwota zamówienia nie przekracza 150 EUR ({czyclo} zł). \n Nie musisz płacić cła ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ")
etykieta = ctk.CTkLabel(okno, text="Wpisz kwotę zamówienia wraz z kosztami przesyłki w jenach lub złotówkach:")
etykieta.pack(pady=20)
wprowadz = ctk.CTkEntry(okno, width=80)
wprowadz.pack()
etykieta = ctk.CTkLabel(okno, text="Wybierz walutę, w której podałeś cenę paczki i przesyłki:")
etykieta.pack(pady=20)
ramka = ctk.CTkFrame(okno)
ramka.pack()
przyciskpln = ctk.CTkButton(ramka, text="Złoty polski PLN", command=przelicz1, fg_color="Hotpink3", hover_color="Hotpink4")
przyciskpln.grid(row=0, column=0)
przyciskjpy = ctk.CTkButton(ramka, text="Jen japoński JPY", command=przelicz2, fg_color="Hotpink3", hover_color="Hotpink4")
przyciskjpy.grid(row=0, column=1)
przeliczone = ctk.CTkLabel(okno, text="")
przeliczone.pack(pady=10)
clo = ctk.CTkLabel(okno, text="")
clo.pack(pady=10)
okno.mainloop()
Notatki z zajęć:
Dictionary/list comprehension
moja_lisy_comp = [number for number in range (1,100)]
moja_lista_comp2 = [number for number in range (1,100) if not number %2]



Poetry
Poetry - Python packaging and dependency manager
GIT
Git – rozproszony system kontroli wersji, który pozwala na niezależne zmiany w jednym kodzie, prowadzone w różnych gałęziach. System pozwala programistom zapisywać wszystkie zmiany w pisanym kodzie w taki sposób, aby niczego nie stracili.
Gry do nauki Gita:


GitHub - jest serwisem, który służy do współpracy przy tworzeniu kodu. Jest jednym z najpopularniejszych serwisów internetowych hostujących repozytoria Git w chmurze. Obsługiwane obszary serwisu obejmują nie tylko przechowywanie kodu, ale również zbieranie informacji o błędach, zarządzanie projektem oraz wszystkie niezbędne procesy automatycznego budowania i testowania aplikacji.
Może służyć nam jako portolio!

Dokumentacja pracy
Zawsze dokumentuj swoją pracę!
Opisywanie funkcji:
def funkcja ():
"""opis funkcji""" #to się wyświetli jako opis funkcji!
#a to jest komentarz
Warto nauczyć się podstaw Markdowna:

Zamiana Markdowna na html jest bardzo prosta. W Joplinie/Obsidianie jest też opcja "export to PDF".
Pandoc - zmienia Markdown na wszystko.

Przydatne darmowe oprogramowanie do dokumentacji/notatek: Joplin (do szybkich, codziennych notatek), Obsidian:

Wzorce projektowe
Sprawdzone rozwiązania powtarzalnego problemu.
Wzorzec projektowy to powtarzające się rozwiązanie pewnego problemu w programowaniu. Prosto mówiąc, jeżeli niezależnie pracujące od siebie osoby czy zespoły dochodzą do tego samego designu rozwiązującego dany problem, to właśnie mamy do czynienia z wzorcem.
Wzorce nie są przez nikogo wymyślane czy projektowane – są odnajdywane. Jeżeli ktoś zakoduje jakiś design i zacznie go nazywać wzorcem, to nagina rzeczywistość. Ale jeśli ta sama osoba odkryje, że podobne rozwiązanie pojawia się w wielu innych projektach i przypadkiem nie ma jeszcze nazwy, to wtedy może nazwać je wzorcem.

if name = main
if __name__ == "__main__":
print("Hello, World!")
It's boilerplate code that protects users from accidentally invoking the script when they didn't intend to.
Służy do zabezpieczenia przed uruchomieniem zbędnego kodu z importowanych bibliotek.
SQL
Do pracy z danymi warto ogarnąć/odświeżyć sobie SQL!
SQLite is the most used database engine in the world.
