Commit 0317802f by Patryk Czarnik

Zadanie na kursy walut - rozwiązania

parent 17a153e6
import json
with open('pracownicy.json', encoding='utf-8') as f:
pracownicy = json.load(f)
# tutaj plik zostanie już zamknięty
print(pracownicy)
while True:
cmd = input('Co chcesz zrobić? [d - dodaj, w - wypisz, q - koniec] ')
if cmd == 'q':
break
elif cmd == 'd':
nowy = {}
nowy["imie"] = input('Podaj imię: ')
nowy["nazwisko"] = input('Podaj nazwisko: ')
nowy["rok_urodzenia"] = int(input('Podaj rok urodzenia: '))
nowy["pensja"] = float(input('Podaj pensję: '))
# print("nowy:", nowy)
pracownicy.append(nowy)
# dodajemy do listy w pamięci, a do pliku zostanie to zapisane po wciśnięciu q
elif cmd == 'w':
for p in pracownicy:
#print(p)
print(f'{p["imie"]} {p["nazwisko"]} ur.{p["rok_urodzenia"]} zarabia {p["pensja"]}')
with open('nowy.json', mode='w', encoding='utf-8') as f:
json.dump(pracownicy, f)
[
{
"imie": "Konrad",
"nazwisko": "Ha\u0142as",
"rok_urodzenia": 1337,
"pensja": 1000.0
},
{
"imie": "Tomek",
"nazwisko": "Nowak",
"rok_urodzenia": 1980,
"pensja": 4000.0
},
{
"imie": "Asia",
"nazwisko": "Kowalska",
"rok_urodzenia": 1990,
"pensja": 6000.0
},
{
"imie": "Kasia",
"nazwisko": "Nowakowska",
"rok_urodzenia": 1999,
"pensja": 6000.0
},
{
"imie": "\"Hakuje\"Ten\"System",
"nazwisko": "Test",
"rok_urodzenia": 123,
"pensja": 123.0
},
{
"imie": "Nowy",
"nazwisko": "Nowak",
"rok_urodzenia": 1233,
"pensja": 1233.0
}
]
\ No newline at end of file
'''
Napisz program, który:
- pobiera najnowszą tabelę kursów NBP
w pętli:
- pozwala użytkownikowi podać kod waluty (np. USD)
- wypisuje dane tej waluty (nazwę oraz kurs)
- pozwala wpisać liczbę
- przelicza podaną kwotę w walucie na złote (i ew. w drugą stronę też)
'''
import requests
ADRES = 'http://api.nbp.pl/api/exchangerates/tables/A/?format=json'
dane = requests.get(ADRES).json()
tabela = dane[0]
rates = tabela["rates"]
print(f'Tabela {tabela["no"]} z dnia {tabela["effectiveDate"]}. {len(rates)} walut')
while True:
kod = input('Podaj kod waluty: ').strip().upper()
if not kod: break
for rate in rates:
if rate["code"] == kod:
print(rate)
mid = rate["mid"]
kwota = float(input('Podaj kwotę: '))
print(f'{kwota:.2f} {kod} = {kwota * mid:.2f} PLN')
print(f'{kwota:.2f} PLN = {kwota / mid:.2f} {kod}')
print()
break
else:
print(f'Nie istnieje waluta o kodzie {kod}')
'''
Napisz program, który:
- pobiera najnowszą tabelę kursów NBP
w pętli:
- pozwala użytkownikowi podać kod waluty (np. USD)
- wypisuje dane tej waluty (nazwę oraz kurs)
- pozwala wpisać liczbę
- przelicza podaną kwotę w walucie na złote (i ew. w drugą stronę też)
W tej wersji na starcie użytkownik może podać datę i wtedy pobierane są kursy archiwalne z podanej daty.
'''
import requests
print('Podaj datę w formacie YYYY-MM-DD, aby pobrać kursy archiwalne.\nAby pobrać kursy bieżące, wciśniej enter.')
data = input(': ')
try:
ADRES = f'http://api.nbp.pl/api/exchangerates/tables/A/{data}?format=json'
response = requests.get(ADRES)
if response.status_code != 200:
print('Błąd pobierania danych. Kod', response.status_code)
exit(1)
dane = response.json()
tabela = dane[0]
rates = tabela["rates"]
print(f'Tabela {tabela["no"]} z dnia {tabela["effectiveDate"]}. {len(rates)} walut')
while True:
kod = input('Podaj kod waluty: ').strip().upper()
if not kod: break
for rate in rates:
if rate["code"] == kod:
print(rate)
mid = rate["mid"]
kwota = float(input('Podaj kwotę: '))
print(f'{kwota:.2f} {kod} = {kwota * mid:.2f} PLN')
print(f'{kwota:.2f} PLN = {kwota / mid:.2f} {kod}')
print()
break
else:
print(f'Nie istnieje waluta o kodzie {kod}')
except Exception as e:
print('Błąd:', e)
* Program pyta o datę notowania i pobiera kursy walutowe z podanej daty.
Jeśli użytkownik naciśnie enter wprowadzajć pusty napis, to pobierana jest bieżąca tabela.
Jeśli użytkownik naciśnie enter wprowadzając pusty napis, to pobierana jest bieżąca tabela.
* W oparciu o pobrane kursy walut program umożliwia przeliczanie kwot.
W pętli program pyta o kod waluty (np. USD) oraz o kwotę do przeliczenia
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment