From 6e6bd1fdc194fff70f5741399554def590e9ce6a Mon Sep 17 00:00:00 2001 From: KubMakCZ Date: Wed, 22 Apr 2026 12:14:29 +0200 Subject: [PATCH] heroes+calculator --- 31_api_heroes/calculator.py | 70 +++++++++++++++++++++++++++++++++++++ 31_api_heroes/main.py | 68 +++++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 31_api_heroes/calculator.py create mode 100644 31_api_heroes/main.py diff --git a/31_api_heroes/calculator.py b/31_api_heroes/calculator.py new file mode 100644 index 0000000..dd95ac5 --- /dev/null +++ b/31_api_heroes/calculator.py @@ -0,0 +1,70 @@ +from flask import Flask, jsonify + +app = Flask(__name__) + +@app.route("/") +def index(): + return """ + + """ + +@app.route("/secti//") +def add(a,b): + vysledek = a+b + return jsonify({ + "operace":"soucet", + "vstup":{"a":a,"b":b}, + "vysledek":vysledek + }) + +@app.route("/odecti//") +def subtract(a,b): + vysledek = a-b + return jsonify({ + "operace":"odčítání", + "vstup":{"a":a,"b":b}, + "vysledek":vysledek + }) + +@app.route("/vynasob//") +def multiply(a,b): + vysledek = a*b + return jsonify({ + "operace":"násobení", + "vstup":{"a":a,"b":b}, + "vysledek":vysledek + }) + +@app.route("/vydel//") +def divide(a,b): + if b == 0: + return jsonify({ + "operace":"dělení", + "vstup":{"a":a,"b":b}, + "chyba":"Dělení nulou není povolené" + }), 400 #HTTP 400 je Bad Request + vysledek = a/b + return jsonify({ + "operace":"dělení", + "vstup":{"a":a,"b":b}, + "vysledek":vysledek + }) + +@app.route("/mocnina//") +def mocnina(zaklad,exponent): + vysledek = zaklad**exponent + return jsonify({ + "operace":"mocnina", + "vstup":{"základ":zaklad,"exponent":exponent}, + "vysledek":vysledek + }) + +if __name__ == "__main__": + print("Server beží na http://localhost:8080") + app.run(host="0.0.0.0",port=8080,debug=True) \ No newline at end of file diff --git a/31_api_heroes/main.py b/31_api_heroes/main.py new file mode 100644 index 0000000..2079ab7 --- /dev/null +++ b/31_api_heroes/main.py @@ -0,0 +1,68 @@ +from flask import Flask, jsonify +import random + +app = Flask(__name__) + +# AltGR + F|G = [|] +# AltGR + B|N = {|} +hrdinove = [ + #{"jmeno":"","rasa":"","hp":100,"level":20} + {"jmeno":"Aragorn","rasa":"clovek","hp":100,"level":20}, + {"jmeno":"Legolas","rasa":"elf","hp":80,"level":18}, + {"jmeno":"Gimli","rasa":"trpaslik","hp":120,"level":21}, + {"jmeno":"Frodo","rasa":"hobbit","hp":40,"level":5}, + {"jmeno":"Gandalf","rasa":"clovek","hp":150,"level":50}, + {"jmeno":"Sauron","rasa":"demon","hp":500,"level":100} +] + +@app.route("/") +def index(): + """Hlavní stránka s rozcesníkem""" + # AltGR + ,|. = <|> + return """ +

RPG Heroes API Server

+
    +
  • Všichni hrdinové: /api/heroes
  • +
  • Náhodný hrdina: /api/heroes/random
  • +
  • Konkretní hrdnina: /api/heroes/ČÍSLO
  • +
  • Filtrovat podle rasy (např.elf): /api/heroes/filter/elf
  • +
+ """ + +@app.route("/api/heroes") +def get_all_heroes(): + """Vrátí celý seznam hrdinů jako JSON""" + return jsonify(hrdinove) + +@app.route("/api/heroes/random") +def get_random_hero(): + """Vrátí náhodného hrdinu jako JSON""" + nahodny = random.choice(hrdinove) + return jsonify(nahodny) + +@app.route("/api/heroes/") +def get_hero_by_id(hero_id): + """Vrátí hrdinu dle jeho indexu v seznamu poli(array)""" + if 0 <= hero_id < len(hrdinove): + return jsonify(hrdinove[hero_id]) + else: + return jsonify({"chyba":"Hrdina s tímto ID neexistuje"}), 404 + +@app.route("/api/heroes/filter/") +def filter_heroes_by_race(rasa): + """Vrátí hrdiny, kteří odpovídají zadané rase""" + vysledek = [] + for hrdina in hrdinove: + if hrdina["rasa"].lower() == rasa.lower(): + vysledek.append(hrdina) + if not vysledek: + return jsonify({"chyba":f"Žádný hrnina rasy '{rasa}'"}) + return jsonify(vysledek) + + + +if __name__ == "__main__": + print("--- HERO SERVER NASTARTOVÁN ---") + print("Server běží na http://localhost:8080") + print("Vypnout server -> CTRL + C") + app.run(host="0.0.0.0",port=8080,debug=True) \ No newline at end of file