Skip to content
Snippets Groups Projects
Commit 1c455852 authored by Rafael László's avatar Rafael László :speech_balloon:
Browse files

added exercise

parent 189ebae1
No related branches found
No related tags found
No related merge requests found
Pipeline #6642 passed
0. Virtuális környezet és Modulok bemutatása gyakorlatban
```python
# Beolvasás
#
# builtins.py fájlból jön ez az "open" függvény
# első paramétere a fájl neve és mindig onnan értékelődik ki
# ahonnan indítottuk a pythont.
# utána jövő paraméter, hogy hogyan nyitjuk meg a fájlt.
# r - read
# w - write: felülírja az egészet
# a - append: fájl végére ír hozzá
# x - Create: Létrehozza a fájlt.
# r,w,a,x -et próbálják ki
# Készítsenek egy 01_file.txt -t vagy hasonlót
# Read:
fajl = open("01_file.txt", "r")
print(fajl.read())
fajl.close() # Mindig zárják be
# Write
fajl = open("01_file.txt", "w")
fajl.write("Okay. ")
# Mi történt a fájlal? - Felülírta teljesen
fajl.close()
# Append
fajl = open("01_file.txt", "a")
fajl.write("Okay?")
# Mi történt? - Végére írta
fajl.close()
# Create
fajl = open("something_new.txt", "x")
# Mi történt? - Létrehozta
# Ha újra lefutatják mi történik? - Errort kaptunk, ezt kezeljük is le!
fajl.close()
```
```python
# Előző példában fájl újra létrehozáskor kaptunk
# egy hibát!
# Python ezeket az úgynevezett "objektumokat" szokta
# dobni, mikor hiba keletkezik és különféle
# adatokkal rendelkeznek, mint üzenet.
# Előzőben volt egy: FileExistsError: [Errno 17] File exists: 'something_new.txt'
try: # Ezen a blokkon belüli dolgokat majd elkapja
fajl = open("something_new.txt", "x")
fajl.close() # Ha errort kap, akkor nem nyitja meg a fájlt,
# szóval nem kell a finally blokkba tenni
except FileExistsError as fe: # Itt feltudjuk típus szerint sorolni, hogy mit kapjon el.
print(fe) # Ha oda írjuk, hogy "as ...", akkor abba bele menti.
# Első körben as nélkül. "Hogyan tudnánk kiírni a hibát?"
# Ezután írjuk ki, hogy "kész a fájl" hibától független
try:
fajl = open("something_new.txt", "x")
fajl.close() # Ha errort kap, akkor nem nyitja meg a fájlt,
# szóval nem kell a finally blokkba tenni
except FileExistsError as fe:
print(fe)
finally:
print("Fájl elkészítve! (Vagy már el volt)")
```
1. Készítsetek egy Python szkriptet, ami a https://hanyadikhetvan.attiss.eu/api -ról
leszedett információ alapján kiírja, hogy hanyadik hét van.
```python
# https://hanyadikhetvan.attiss.eu/api
import requests
# Mi az az API?
# Application Programming Interface, a lényeg, hogy
# ez az interfész, amin 1-1 alkalmazást elérünk és valamilyen
# formában tudunk vele kommunikálni.
#
# Nézzék meg, hogy mi van a https://hanyadikhetvan.attiss.eu/api oldalon.
# Ez egy JSON, mely egy sztenderd adatközlési mód a weben,
# a lényeg, hogy kulcs érték párosokat tudunk az oldalon lévőhöz hasonlóképp
# leírni.
# Na és használjuk!
r = requests.get('https://hanyadikhetvan.attiss.eu/api')
print(r) # <Response [200]> - Különböző státuszkódokkal térhet vissza
# egy API, pl 200 - OK, vagy 404 - Not Found
# Vannak beépített függvényeink
print(r.status_code) # Státuszkód számként
print(r.ok) # Státuszkód 200 és 400 közé esik
# Na de olvassuk ki az adatunkat végre
print(r.content) # hmm ez így nem lesz tökéletes nekünk. Látható, hogy b'', azaz
# ezek bájtok, továbbá egy új sor is van benne
print(r.json()) # Újabb beépített függvény, mely készít nekünk egy Dictionary-t!!
print(type(r.json())) # <class 'dict'>
print(r.json()["week"]) # 5
# Végleges kód:
import requests
r = requests.get('https://hanyadikhetvan.attiss.eu/api')
print(r.json()["week"])
```
2. Írjátok meg a saját "hanyadikhétvan" apitokat.
```python
# Ehhez a flask könyvtárat fogjuk használni,
# mellyel képesek vagyunk nagyon könnyedén
# webszervereket készíteni.
import flask
import requests
# Inicializáció. Ez az objektum fő amin
# keresztül mindent elérünk Flask-ben.
# Kosntruktorban átadtuk a jelenlegi App nevét,
# emlékeztek ha ez = "__main__" akkor ezt a fájlt
# indítottuk el.
app = flask.Flask(__name__)
# Engedélyezzük, hogy logoljon mindent
app.config["DEBUG"] = True
# Megmondjuk, hogy a /-re GET-el ezt a függvényt hívja meg.
# Hogy ez hogyan működik a háttérben?
# - Nézzenek utánna a különböző Python dekorátoroknak :)
@app.route('/', methods=['GET'])
def home():
# Lekérjük az előző oldalról :D Laziness 100
r = requests.get('https://hanyadikhetvan.attiss.eu/api')
# Visszatérünk vele
return r.json()
app.run()
```
3. Kössétek össze az első szkriptetekkel
```python
import requests
r = requests.get('http://127.0.0.1:5000')
print(r.json()["week"])
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment