2026. június 14., vasárnap

Okos otthon pythonban

import sqlite3
from flask import Flask, jsonify, request

app = Flask(__name__)

DB = "smart_home.db"


def init_db():
    conn = sqlite3.connect(DB)
    cur = conn.cursor()

    cur.execute("""
    CREATE TABLE IF NOT EXISTS devices(
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT,
        type TEXT,
        state TEXT
    )
    """)

    conn.commit()
    conn.close()


def add_device(name, dtype):

    conn = sqlite3.connect(DB)
    cur = conn.cursor()

    cur.execute(
        "INSERT INTO devices(name,type,state) VALUES(?,?,?)",
        (name, dtype, "OFF")
    )

    conn.commit()
    conn.close()


def get_devices():

    conn = sqlite3.connect(DB)
    cur = conn.cursor()

    cur.execute("SELECT * FROM devices")

    rows = cur.fetchall()

    conn.close()

    return rows


def set_state(device_id, state):

    conn = sqlite3.connect(DB)
    cur = conn.cursor()

    cur.execute(
        "UPDATE devices SET state=? WHERE id=?",
        (state, device_id)
    )

    conn.commit()
    conn.close()


@app.route("/")
def home():

    devices = []

    for d in get_devices():
        devices.append({
            "id": d[0],
            "name": d[1],
            "type": d[2],
            "state": d[3]
        })

    return jsonify(devices)


@app.route("/device/add", methods=["POST"])
def device_add():

    data = request.json

    add_device(
        data["name"],
        data["type"]
    )

    return {"status": "ok"}


@app.route("/device/<int:device_id>/on")
def turn_on(device_id):

    set_state(device_id, "ON")

    return {"status": "ON"}


@app.route("/device/<int:device_id>/off")
def turn_off(device_id):

    set_state(device_id, "OFF")

    return {"status": "OFF"}


if __name__ == "__main__":

    init_db()

    if len(get_devices()) == 0:

        add_device("Nappali lámpa", "light")
        add_device("Hálószoba lámpa", "light")
        add_device("Kazán", "heater")

    app.run(
        host="0.0.0.0",
        port=8123
    )

Rendszerező

A "legértékesebb" Python program egy szubjektív fogalom, mivel az értékét az határozza meg, hogy mennyi időt takarít meg, vagy mekkora bevételt és hatékonyságot generál a fejlesztőjének. A Python közösségben és az üzleti életben a legértékesebbnek azok a programok számítanak, amelyek automatizálják a mindennapi feladatokat, vagy nagyméretű platformok alapjait képezik.Néhány kiemelkedő példa a legértékesebb vagy leggyakrabban használt Python-alkalmazásokra és -szkriptekre:Adatfeldolgozó és elemző szkriptek: A pandas és NumPy könyvtárakat használó programok, amelyek pénzügyi vagy üzleti adatokból készítenek kimutatásokat.Webes keretrendszerek (pl. Django): Komplex vállalati weboldalak, amelyek magas hatékonysággal és méretezhetőséggel működnek.Automatizációs szkriptek: Személyes időmenedzsmentet segítő programok, amelyek fájlokat rendeznek, vagy ismétlődő adminisztratív feladatokat végeznek el (például adatok szűrése és mentése).A Python hatalmas ökoszisztémája miatt a legértékesebb szkript az, amelyet kifejezetten a saját problémád megoldására írsz meg.Ízelítőül itt van egy alapvető, de hasznos Python szkript, amely automatikusan szortírozza a fájlokat egy letöltési mappában, megakadályozva a digitális káoszt.
import os
import shutil
from pathlib import Path

# A rendezni kívánt mappa elérési útja
folder_to_track = Path.home() / "Downloads"

# Fájlkiterjesztések csoportosítása kategóriák szerint
extensions_map = {
    "Képek": [".jpg", ".jpeg", ".png", ".gif"],
    "Dokumentumok": [".pdf", ".docx", ".txt", ".xlsx"],
    "Telepítők": [".exe", ".msi"],
    "Archiv_allomanyok": [".zip", ".rar"],
}

def organize_downloads():
    for file in folder_to_track.iterdir():
        if file.is_file():
            file_extension = file.suffix.lower()
            moved = False
            
            for category, extensions in extensions_map.items():
                if file_extension in extensions:
                    category_folder = folder_to_track / category
                    category_folder.mkdir(exist_ok=True)
                    
                    # Fájl áthelyezése
                    shutil.move(str(file), str(category_folder / file.name))
                    moved = True
                    break

if __name__ == "__main__":
    organize_downloads()
    print("A letöltések rendezése sikeresen befejeződött!")

Lerajzoltattam pythonba egy 10*10-es ház tervrajzát.

Lerajzoltattam pythonba egy 10*10-es ház tervrajzát, ami tartalmaz 2 szobát, egy konyhát kamrát és fürdőszobát, bejelölve az ablakokat és az ajtókat.
--------------------

import matplotlib.pyplot as plt
import matplotlib.patches as patches

def draw_house():
    fig, ax = plt.subplots(figsize=(6,6))
    ax.set_xlim(-1, 11)
    ax.set_ylim(-1, 11)
    ax.set_aspect('equal')
    ax.axis('off')

    # Külső fal
    outer = patches.Rectangle((0, 0), 10, 10, fill=None, edgecolor="black", lw=2)
    ax.add_patch(outer)

    # Válaszfalak (elképzelés: bal oldal és jobb oldal)
    ax.plot([4, 4], [0, 4], color="black", lw=2)
    ax.plot([4, 4], [6, 10], color="black", lw=2)
    ax.plot([0, 4], [4, 4], color="black", lw=2)
    ax.plot([4, 10], [4, 4], color="black", lw=2)

    # Szobák, konyha, kamra, fürdőszoba
    room1 = patches.Rectangle((0, 0), 4, 4, fill=None, edgecolor="blue", lw=1.5)
    ax.add_patch(room1)
    ax.text(2, 2, "Szoba 1", ha="center", va="center", fontsize=9, color="blue")

    room2 = patches.Rectangle((0, 6), 4, 4, fill=None, edgecolor="blue", lw=1.5)
    ax.add_patch(room2)
    ax.text(2, 8, "Szoba 2", ha="center", va="center", fontsize=9, color="blue")

    kitchen = patches.Rectangle((4, 0), 4, 4, fill=None, edgecolor="green", lw=1.5)
    ax.add_patch(kitchen)
    ax.text(6, 2, "Konyha", ha="center", va="center", fontsize=9, color="green")

    pantry = patches.Rectangle((8, 0), 2, 2, fill=None, edgecolor="red", lw=1.5)
    ax.add_patch(pantry)
    ax.text(9, 1, "Kamra", ha="center", va="center", fontsize=9, color="red")

    bath = patches.Rectangle((8, 2), 2, 2, fill=None, edgecolor="orange", lw=1.5)
    ax.add_patch(bath)
    ax.text(9, 3, "Fürdőszoba", ha="center", va="center", fontsize=9, color="orange")

    # Ablakok (külső falak középen)
    ax.plot([2, 2], [0, 0.6], color="C0", lw=6)      # ablaki az alsó bal falon
    ax.plot([6, 6], [10, 9.4], color="C0", lw=6)    # ablaki a felső bal/felülön
    ax.plot([0, -0.6], [2, 2], color="C0", lw=6)    # bal oldal ablak
    ax.plot([10, 9.4], [6, 6], color="C0", lw=6)   # jobb oldal ablak

    # Ajtók (kis törések a falakon)
    ax.plot([3.8, 3.8], [0, -0.2], color="brown", lw=4)      # bejárat
    ax.plot([4, 4], [4, 4.6], color="brown", lw=4)           # ajtó a Szoba1-hoz
    ax.plot([4, 4], [6, 6.6], color="brown", lw=4)           # ajtó a Szoba2-hoz

    plt.show()

if __name__ == "__main__":
    draw_house()
--------------
 




2026. június 13., szombat

A legjobb 20 részvény

Ez a kód letölti a megadott részvények havi adatait és kiírja az első öt nap záró árát, valamint az átlagos napi hozamot. Ahhoz, hogy valóban a 'legjobb 20' részvényt gyűjtsd ki, meg kell határoznod, milyen kritériumok alapján szeretnéd rangsorolni őket (pl. piaci kapitalizáció, elmúlt évi hozam, osztalék, volatilitás stb.), majd ehhez megfelelő adatokat kell gyűjteni és elemezni. Ehhez gyakran komplexebb adatszolgáltatásokra vagy API-kra van szükség. 

-------------

import tkinter as tk

from tkinter import ttk

import urllib.request, json

from datetime import datetime

 

TICKERS = ["AAPL", "MSFT", "NVDA", "GOOGL"]

F = {

    "AAPL": {"month": [(datetime(2026,1,2),185.0),(datetime(2026,1,3),186.5),(datetime(2026,1,4),184.2)],

             "year": [(datetime(2026,1,2),172.0),(datetime(2026,6,2),190.0),(datetime(2025,1,2),210.0)],

             "market_cap": 3000000000000, "dividend_yield": 0.005},

    "MSFT": {"month": [(datetime(2026,1,2),410.0),(datetime(2026,1,3),412.0),(datetime(2026,1,4),409.5)],

             "year": [(datetime(2026,1,2),370.0),(datetime(2026,6,2),420.0),(datetime(2025,1,2),455.0)],

             "market_cap": 2900000000000, "dividend_yield": 0.007},

    "NVDA": {"month": [(datetime(2026,1,2),620.0),(datetime(2026,1,3),630.0),(datetime(2026,1,4),625.0)],

             "year": [(datetime(2026,1,2),490.0),(datetime(2026,6,2),700.0),(datetime(2025,1,2),850.0)],

             "market_cap": 2500000000000, "dividend_yield": 0.0},

    "GOOGL": {"month": [(datetime(2026,1,2),138.0),(datetime(2026,1,3),139.2),(datetime(2026,1,4),137.8)],

              "year": [(datetime(2026,1,2),130.0),(datetime(2026,6,2),145.0),(datetime(2025,1,2),170.0)],

              "market_cap": 1800000000000, "dividend_yield": 0.0}

}

 

def fb(s, r): return F.get(s, {}).get("month" if r == "1mo" else "year", [])

def fbf(s): x = F.get(s, {}); return x.get("market_cap", 0), x.get("dividend_yield", 0.0)

 

def j(u):

    try:

        with urllib.request.urlopen(urllib.request.Request(u, headers={"User-Agent": "Mozilla/5.0"}), timeout=20) as r:

            return json.loads(r.read().decode())

    except Exception:

        return None

 

def chart(s, r="1mo"):

    d = j(f"https://query1.finance.yahoo.com/v8/finance/chart/{s}?range={r}&interval=1d")

    try:

        x = d["chart"]["result"][0]

        rows = [(datetime.fromtimestamp(t), float(c)) for t, c in zip(x.get("timestamp", []), x.get("indicators", {}).get("quote", [{}])[0].get("close", [])) if c is not None]

        return rows or fb(s, r)

    except Exception:

        return fb(s, r)

 

def fund(s):

    d = j(f"https://query1.finance.yahoo.com/v10/finance/quoteSummary/{s}?modules=price,summaryDetail")

    try:

        x = d["quoteSummary"]["result"][0]

        return x.get("price", {}).get("marketCap", {}).get("raw", 0), x.get("summaryDetail", {}).get("dividendYield", {}).get("raw", 0.0)

    except Exception:

        return fbf(s)

 

def avg(cs):

    rs = [(cs[i] - cs[i-1]) / cs[i-1] for i in range(1, len(cs)) if cs[i-1]]

    return sum(rs) / len(rs) if rs else 0.0

 

def vol(cs):

    rs = [(cs[i] - cs[i-1]) / cs[i-1] for i in range(1, len(cs)) if cs[i-1]]

    if len(rs) < 2: return 0.0

    m = sum(rs) / len(rs)

    return ((sum((r - m) ** 2 for r in rs) / (len(rs) - 1)) ** 0.5) * (252 ** 0.5)

 

def log(t):

    out.insert(tk.END, t + "\n")

    out.see(tk.END)

    root.update_idletasks()

 

def analyze():

    out.delete("1.0", tk.END)

    log("Elemzés indul...")

    res = []

    for s in TICKERS:

        log(f"Letöltés: {s}")

        m, y = chart(s, "1mo"), chart(s, "1y")

        if not m or not y:

            log(f"Hiba ({s}): nincs adat.")

            continue

        mc = [c for _, c in m]

        yc = [c for _, c in y]

        adr, v = avg(mc), vol(mc)

        yr = (yc[-1] / yc[0]) - 1 if yc and yc[0] else 0.0

        cap, dy = fund(s)

        res.append((s, cap, yr, dy, v, adr))

        log("")

        log(s)

        log("Első 5 kereskedési nap záróára:")

        for d, c in m[:5]: log(f"{d.date()} : {c:.2f}")

        log(f"Átlagos napi hozam: {adr:.4%}")

        log(f"Éves hozam: {yr:.2%}")

        log(f"Volatilitás: {v:.2%}")

        log(f"Piaci kapitalizáció: {cap:,.0f} USD")

        log(f"Osztalékhozam: {dy:.2%}")

    if res:

        log("")

        log("=" * 70)

        log("RANGSOR")

        log("=" * 70)

        for s, cap, yr, dy, v, adr in sorted(res, key=lambda x: (x[1], x[2], x[3], -x[4]), reverse=True):

            log(f"{s} | YearlyReturn: {yr:.2%} | DividendYield: {dy:.2%} | Volatility: {v:.2%} | AvgDailyReturn: {adr:.4%}")

    else:

        log("Nem sikerült eredményt előállítani.")

 

root = tk.Tk()

root.title("Részvény elemző")

frm = ttk.Frame(root, padding=10)

frm.pack(fill="both", expand=True)

ttk.Button(frm, text="Elemzés", command=analyze).pack(pady=5)

out = tk.Text(frm, width=100, height=30)

out.pack(fill="both", expand=True)

out.insert(tk.END, "Nyomd meg az 'Elemzés' gombot.\n")

root.mainloop()

--------------




Random rajz


import turtle
import random

myPen = turtle.Turtle()
myPen.tracer(0)
myPen.speed(0)

screen = turtle.Screen()
#Blue Sky
screen.bgcolor("#0060E6")


#A procedure to trace the skyline using a polynomiale function: 
def drawSkyline(color):
  global a,b,c,d
  myPen.penup()
  myPen.goto(-200,-200)
  myPen.color(color)
  myPen.pendown()
  myPen.fillcolor(color)
  myPen.begin_fill()
  #Trace the skyline, 1 pixel at a time, from left (x=-200) to right (x=200)
  for x in range(-200,201):
    y = a*x**3 + b*x**2  + c*x + d
    myPen.goto(x,y)

  myPen.goto(200,-200)
  myPen.goto(-200,-200)
  myPen.end_fill()
    
  myPen.penup()

def addTree(color):
  global a,b,c,d 
  x = random.randint(-200,200)
  y = a*x**3 + b*x**2  + c*x + d
  myPen.penup()
  myPen.goto(x,y)
  myPen.pensize(3)
  myPen.color("#753707")
  myPen.pendown()
  myPen.goto(x,y+10)
  myPen.color(color)
  myPen.fillcolor(color)
  myPen.pensize(1)
  myPen.begin_fill()
  myPen.circle(15)
  myPen.end_fill()

# Main Program Starts Here
#Randomly generate coefficients for our polynomial function
a = random.randint(-20,20)/(100**3)
b = random.randint(-20,20)/(100**2)
c = random.randint(-20,20)/100
d = random.randint(-20,20)

#Draw the skyline using the polynomial function
drawSkyline("green")

#Add Trees
for i in range(0,random.randint(2,5)):
  addTree("#065900")
  addTree("#2B7A26")


myPen.hideturtle()
screen.tracer(0)
myPen.getscreen().update()
-----------------


Szótár

A Python program, egy szótár (dictionary) segítségével tárolja a megadott szavakat, azok szófaját és jelentését. A program lehetővé teszi, hogy rákeress egy szóra, és kiírja annak összes tulajdonságát.
---------------
# A szótár adatbázisa
szotar = {
    "akesi": {
        "szófaj": "főnév",
        "jelentés": "nem aranyos állat, hüllő, kétéltű"
    },
    "ala": [
        {"szófaj": "melléknév", "jelentés": "nem, nincs, nélkül"},
        {"szófaj": "főnév", "jelentés": "semmi, tagadás, nulla"},
        {"szófaj": "felkiáltás", "jelentés": "nem!"}
    ],
    "alasa": [
        {"szófaj": "tárgyas ige", "jelentés": "gyűjtöget, vadászik, takarmányoz"},
        {"szófaj": "főnév", "jelentés": "szerzemény, zsákmány"}
    ],
    "ale": [
        {"szófaj": "főnév", "jelentés": "minden, bármi, élet, univerzum"},
        {"szófaj": "melléknév", "jelentés": "minden, minden, teljes, egész"}
    ],
    "anpa": [
        {"szófaj": "főnév", "jelentés": "alsó, alsó rész, alatta, lenti, alatti"},
        {"szófaj": "melléknév", "jelentés": "alacsony, alsó, fenék, lent, alázatos, függő"}
    ],
    "ante": [
        {"szófaj": "főnév", "jelentés": "különbség"},
        {"szófaj": "melléknév", "jelentés": "más, különböző"},
        {"szófaj": "kötőszó", "jelentés": "különben, vagy másként"},
        {"szófaj": "tárgyas ige", "jelentés": "változtatni, módosítani"}
    ],
    "anu": {
        "szófaj": "kötőszó",
        "jelentés": "vagy"
    },
    "awen": [
        {"szófaj": "alanyi ige", "jelentés": "maradj, várj, állj"},
        {"szófaj": "tárgyas ige", "jelentés": "tartani"},
        {"szófaj": "melléknév", "jelentés": "megmaradt, álló, állandó, ülő"}
    ],
    "e": {
        "szófaj": "kötőszó",
        "jelentés": "(közvetlen dolog bevezetése)"
    },
    "en": {
        "szófaj": "kötőszó",
        "jelentés": "és (a főnevek elhelyezésére szolgál)"
    },
    "esun": {
        "szófaj": "főnév",
        "jelentés": "piac, bolt, üzlet, kereskedés, eladás, vétel"
    },
    "ijo": [
        {"szófaj": "főnév", "jelentés": "dolog, valami, cucc, bármi, tárgy"},
        {"szófaj": "melléknév", "jelentés": "valaminek"},
        {"szófaj": "tárgyas ige", "jelentés": "tárgyiasítani"}
    ],
    "ike": [
        {"szófaj": "melléknév", "jelentés": "rossz, negatív, hibás, gonosz, túl bonyolult, (átvitt értelemben) egészségtelen"},
        {"szófaj": "felkiáltás", "jelentés": "ó drágám! jaj! nál nél!"},
        {"szófaj": "főnév", "jelentés": "negativitás, rosszindulat, gonoszság"},
        {"szófaj": "tárgyas ige", "jelentés": "rosszat tenni, rontani, negatívan hatni"},
        {"szófaj": "alanyi ige", "jelentés": "rossznak lenni, pórul járni"}
    ],
    "ilo": {
        "szófaj": "főnév",
        "jelentés": "szerszám, eszköz, gép, meghatározott célra használt dolog"
    },
    "insa": [
        {"szófaj": "főnév", "jelentés": "belül, belső világ, középpont, gyomor"},
        {"szófaj": "melléknév", "jelentés": "belső, benti"}
    ],
    "jaki": [
        {"szófaj": "melléknév", "jelentés": "piszkos, durva, koszos"},
        {"szófaj": "főnév", "jelentés": "kosz, szennyezés, szemét, hulladék"},
        {"szófaj": "tárgyas ige", "jelentés": "szennyez, koszos"},
        {"szófaj": "felkiáltás", "jelentés": "ó! fúj!"}
    ],
    "jan": [
        {"szófaj": "főnév", "jelentés": "személy, emberek, ember, lény, valaki, bárki"},
        {"szófaj": "melléknév", "jelentés": "emberi, valakinek, személyes, embereké"},
        {"szófaj": "tárgyas ige", "jelentés": "megszemélyesít, humanizál, személyre szab"}
    ],
    "jelo": {
        "szófaj": "melléknév",
        "jelentés": "sárga, világoszöld"
    },
    "jo": [
        {"szófaj": "tárgyas ige", "jelentés": "van, tartalmaz"},
        {"szófaj": "főnév", "jelentés": "birtoklás"},
        {"szófaj": "alanyi ige", "jelentés": "kap, kap, vesz, szerez"}
    ],
    "kala": {
        "szófaj": "főnév",
        "jelentés": "hal, tengeri lény"
    },
    "kalama": [
        {"szófaj": "főnév", "jelentés": "hang, zaj, hang"},
        {"szófaj": "alanyi ige", "jelentés": "zajt csap"},
        {"szófaj": "tárgyas ige", "jelentés": "hang, cseng, játék (hangszer)"}
    ],
    "kama": {
        "szófaj": "alanyi ige",
        "jelentés": "jön, lesz, megérkezik, megtörténik, cselekvéseket hajt végre, hogy elérjen (egy bizonyos állapotba)"
    }
}

def szo_kereses(keresett_szo):
    """Függvény egy adott szó adatainak kiírására."""
    keresett_szo = keresett_szo.lower().strip()
    
    if keresett_szo in szotar:
        adatok = szotar[keresett_szo]
        print(f"\nTalálat: '{keresett_szo.capitalize()}':")
        
        # Ha több jelentése/szófaja is van a szónak (lista)
        if isinstance(adatok, list):
            for elem in adatok:
                print(f"- Szófaj: {elem['szófaj']} | Jelentés: {elem['jelentés']}")
        # Ha csak egyetlen szófaj tartozik hozzá (szótár)
        elif isinstance(adatok, dict):
            print(f"- Szófaj: {adatok['szófaj']} | Jelentés: {adatok['jelentés']}")
    else:
        print(f"\nSajnos a(z) '{keresett_szo}' szó nem található a szótárban.")

# Interaktív menü
if __name__ == "__main__":
    print("Üdvözlöm a szótárban! Írjon be egy szót, vagy lépjen ki a 'k' betűvel.")
    
    while True:
        felhasznalo_input = input("\nKeresett szó: ")
        if felhasznalo_input.lower() == 'k':
            print("Kilépés a programból. Viszlát!")
            break
        szo_kereses(felhasznalo_input)

Mesterséges nyelv

# Egy nagyon egyszerű mesterséges nyelv szótára (Magyar -> Nano-nyelv)
SZOTAR = {
    "a": "a",
    "az": "az",
    "e": "e",
    "s": "s",
    "ő": "o",
    "te": "te",
    "í": "i",
    "ó": "o",
    "á": "a",
    "hé": "he",
    "ez": "ez",
    "én": "en",
    "mi": "mi",
    "ti": "ti",
    "ki": "ki",
    "itt": "itt",
    "ott": "ott",
    "így": "igy",
    "úgy": "ugy",
    "még": "meg",
    "már": "mar",
    "nem": "nem",
    "igen": "igen",
    "be": "be",
    "ki": "ki",
    "le": "le",
    "fel": "fel",
    "meg": "meg",
    "el": "el",
    "át": "at",
    "rá": "ra",
    "ad": "ad",
    "ír": "ir",
    "áll": "all",
    "él": "el",
    "kér": "ker",
    "vár": "var",
    "fa": "fa",
    "kő": "ko",
    "ló": "lo",
    "fű": "fu",
    "víz": "viz",
    "nap": "nap",
    "ház": "haz",
    "fal": "fal",
    "jön": "jön",
    "megy": "megy",
  "haza": "haza",
}

# Fordított szótár
NANO_SZOTAR = {v: k for k, v in SZOTAR.items()}

def magyar_nano_fordito(mondat):
    """Magyar mondatot fordít Nano-nyelvre."""
    szavak = mondat.lower().split()
    return " ".join(SZOTAR.get(szo, "{" + szo + "}") for szo in szavak)

def nano_magyar_fordito(mondat):
    """Nano-nyelvű mondatot fordít magyarra."""
    szavak = mondat.lower().split()
    return " ".join(NANO_SZOTAR.get(szo, "{" + szo + "}") for szo in szavak)

# --- Tesztelés ---
print("--- Nano-nyelv Generátor és Fordító ---")

magyar_mondat = "én megyek haza"
nano_eredmeny = magyar_nano_fordito(magyar_mondat)

print(f"Magyarul: {magyar_mondat}")
print(f"Nano-nyelven: {nano_eredmeny}")

vissza_magyarul = nano_magyar_fordito(nano_eredmeny)
print(f"Visszafordítva: {vissza_magyarul}")
------------
--- Nano-nyelv Generátor és Fordító ---
Magyarul: én megyek haza
Nano-nyelven: en {megyek} haza
Visszafordítva: én {{megyek}} haza

Generáljunk szavakat

import random

# Karakterek meghatározása
maganhangzok = ['a', 'e', 'i', 'o', 'u']
massalhangzok = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z']

def uj_szO_generalas():
    # Véletlenszerű hossz választása (3 vagy 4)
    hossz = random.randint(1, 5,)
    
    uj_szo = ""
    for i in range(hossz):
        # Ha a pozíció páros vagy páratlan, váltogatjuk a magán- és mássalhangzókat
        if i % 2 == 0:
            uj_szo += random.choice(massalhangzok)
        else:
            uj_szo += random.choice(maganhangzok)
            
    return uj_szo

# Példa: 10 db mesterséges szó generálása és kiírása
print("Generált szavak az új nyelvből:")
for _ in range(10):
    print(uj_szO_generalas())
-----------------
Generált szavak az új nyelvből:
xu
cuqec
puk
nawuy
wal
c
t
vara
homi
p
Generált szavak az új nyelvből:
xu
cuqec
puk
nawuy
wal
c
t
vara
homi
pGenerált szavak az új nyelvből:
sos
zece
ned
pum
ruj
cep
fulu
nise
qop
vez

Lotka–Volterra szimuláció

Íme egy akadémiai szintű kutatói elemzés megoldása Python programnyelven, ami egy numerikus integrációt és egy differenciálegyenlet-rendszer szimulációját valósítja meg.A kód a matematikai modellezés és a tudományos számítások (pl. fizika, biológia) alapjait képező Lotka–Volterra (ragadozó-préda) egyenletrendszert szimulálja. A megoldáshoz a scipy integrálási segédletét, az eredmények vizualizációjához pedig a matplotlib könyvtárat használja.
-----------------------

import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt

# A rendszer dinamikáját leíró differenciálegyenlet-rendszer
def lotka_volterra(t, z, alpha, beta, delta, gamma):
    x, y = z
    dxdt = alpha * x - beta * x * y
    dydt = delta * x * y - gamma * y
    return [dxdt, dydt]

# 1. Paraméterek beállítása (akadémiai szimuláció)
alpha = 0.1   # préda szaporodási ráta
beta = 0.02   # ragadozó általi zsákmányolási ráta
delta = 0.01  # ragadozó szaporodási ráta zsákmány elfogyasztásakor
gamma = 0.1   # ragadozó természetes halálozási rátája

# 2. Kezdeti feltételek és időintervallum
x0 = 20.0  # Préda kezdeti populációja
y0 = 10.0  # Ragadozó kezdeti populációja
z0 = [x0, y0]

t_span = (0, 200)       # Kezdő és végidő
t_eval = np.linspace(0, 200, 1000) # Kiértékelési pontok (numerikus integrációhoz)

# 3. Numerikus megoldás (Runge-Kutta 4/5. rendű módszerrel - RK45)
solution = solve_ivp(
    lotka_volterra, t_span, z0, args=(alpha, beta, delta, gamma), 
    t_eval=t_eval, rtol=1e-8, atol=1e-8
)

# 4. Vizualizáció
plt.figure(figsize=(12, 5))

# Időbeli lefolyás
plt.subplot(1, 2, 1)
plt.plot(solution.t, solution.y[0], 'g-', label='Préda (Növényevő)')
plt.plot(solution.t, solution.y[1], 'r-', label='Ragadozó')
plt.title('Pop_uláci_ók időbeli alakulása')
plt.xlabel('Idő ($t$)')
plt.ylabel('Egyedszám')
plt.legend()
plt.grid(True)

# Fázistér diagram
plt.subplot(1, 2, 2)
plt.plot(solution.y[0], solution.y[1], 'b-', label='Trajektória')
plt.title('Fázistér diagram')
plt.xlabel('Préda populáció ($x$)')
plt.ylabel('Ragadozó populáció ($y$)')
plt.grid(True)

plt.tight_layout()
plt.show()
---------------------
Eredmény
---------------

Futtatás; https://python-fiddle.com/examples/matplotlib?checkpoint=1781357422

A malmozó program vázlata (Python)

tabla = [" "] * 24

malmok = [
    [0, 1, 2], [3, 4, 5], [6, 7, 8],
    [9, 10, 11], [12, 13, 14], [15, 16, 17],
    [18, 19, 20], [21, 22, 23],
    [0, 9, 21], [8, 11, 20], [1, 4, 7], [16, 13, 10],
    [3, 12, 18], [5, 14, 23], [2, 5, 8], [15, 18, 21]
]

def tabla_rajzolo(t):
    print(f"{t[0]}-----{t[1]}-----{t[2]}")
    print(f"| {t[3]}---{t[4]}---{t[5]} |")
    print(f"| | {t[6]}-{t[7]}-{t[8]} | |")
    print(f"{t[9]}-{t[10]}-{t[11]}   {t[12]}-{t[13]}-{t[14]}")
    print(f"| | {t[15]}-{t[16]}-{t[17]} | |")
    print(f"| {t[18]}---{t[19]}---{t[20]} |")
    print(f"{t[21]}-----{t[22]}-----{t[23]}")

def nyert_e(t, jatekos):
    for harom in malmok:
        if t[harom[0]] == jatekos and t[harom[1]] == jatekos and t[harom[2]] == jatekos:
            return True
    return False

def jatek_inditas():
    lepesei = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
    kor = 0

    while kor < len(lepesei):
        jatekos = "X" if kor % 2 == 0 else "O"
        lepes = lepesei[kor]

        if tabla[lepes] == " ":
            tabla[lepes] = jatekos
            tabla_rajzolo(tabla)
            print(f"{jatekos} lépése: {lepes}")

            if nyert_e(tabla, jatekos):
                print(f"{jatekos} játékos malmot zárt és nyert!")
                return

            kor += 1
        else:
            print("Ez a mező már foglalt!")
            kor += 1

    print("A játék véget ért. Nem lett győztes.")

jatek_inditas()
------------------
Output:
X----- ----- 
|  --- ---  |
| |  - -  | |
 - -     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
X lépése: 0
X-----O----- 
|  --- ---  |
| |  - -  | |
 - -     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
O lépése: 1
X-----O-----X
|  --- ---  |
| |  - -  | |
 - -     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
X lépése: 2
X-----O-----X
| O--- ---  |
| |  - -  | |
 - -     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
O lépése: 3
X-----O-----X
| O---X---  |
| |  - -  | |
 - -     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
X lépése: 4
X-----O-----X
| O---X---O |
| |  - -  | |
 - -     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
O lépése: 5
X-----O-----X
| O---X---O |
| | X- -  | |
 - -     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
X lépése: 6
X-----O-----X
| O---X---O |
| | X-O-  | |
 - -     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
O lépése: 7
X-----O-----X
| O---X---O |
| | X-O-X | |
 - -     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
X lépése: 8
X-----O-----X
| O---X---O |
| | X-O-X | |
O- -     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
O lépése: 9
X-----O-----X
| O---X---O |
| | X-O-X | |
O-X-     - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
X lépése: 10
X-----O-----X
| O---X---O |
| | X-O-X | |
O-X-O    - - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
O lépése: 11
X-----O-----X
| O---X---O |
| | X-O-X | |
O-X-O   X- - 
| |  - -  | |
|  --- ---  |
 ----- ----- 
X lépése: 12
X-----O-----X
| O---X---O |
| | X-O-X | |
O-X-O   X-O- 
| |  - -  | |
|  --- ---  |
 ----- ----- 
O lépése: 13
X-----O-----X
| O---X---O |
| | X-O-X | |
O-X-O   X-O-X
| |  - -  | |
|  --- ---  |
 ----- ----- 
X lépése: 14
X-----O-----X
| O---X---O |
| | X-O-X | |
O-X-O   X-O-X
| | O- -  | |
|  --- ---  |
 ----- ----- 
O lépése: 15
X-----O-----X
| O---X---O |
| | X-O-X | |
O-X-O   X-O-X
| | O-X-  | |
|  --- ---  |
 ----- ----- 
X lépése: 16
X-----O-----X
| O---X---O |
| | X-O-X | |
O-X-O   X-O-X
| | O-X-O | |
|  --- ---  |
 ----- ----- 
O lépése: 17
A játék véget ért. Nem lett győztes.
Ready

Monty Hall-paradoxon

A valószínűségszámításban az egyik leghíresebb és legnehezebben átlátható klasszikus feladvány a Monty Hall-paradoxon. Ez egy olyan valószínűségi fejtörő, amely még a matematikusokat is zavarba ejti, de Python segítségével könnyen bebizonyítható a helyes stratégia.A feladat a következő: adott 3 ajtó. Az egyik mögött egy autó van (fődíj), a másik kettő mögött kecske. Te választasz egy ajtót. Monty (a műsorvezető, aki tudja, mi van a zárt ajtók mögött) kinyitja az egyik olyan ajtót, am mögött kecske van. Ezután megkérdezi: „Meg akarod változtatni a választásodat a másik csukott ajtóra?”A válasz: Igen, mindig érdemes váltani, mert így a nyerési esélyed 33%-ról 66%-ra nő.Az alábbi Python program szimulálja ezt a folyamatot több ezer lejátszással, hogy bizonyítsa a fenti állítást.
-----------
import random

def monty_hall_sim(jatekok_szama):
    valtoztatassal_nyert = 0
    nem_valtoztatassal_nyert = 0

    for _ in range(jatekok_szama):
        # Az autó helye (1, 2 vagy 3)
        auto_helye = random.randint(1, 3)
        
        # A játékos kezdeti választása
        jatekos_valasztasa = random.randint(1, 3)
        
        # Monty kinyit egy ajtót (nem a nyertes, és nem a játékos által választott)
        monty_altal_nyitott = [ajto for ajto in [1, 2, 3] if ajto != auto_helye and ajto != jatekos_valasztasa][0]
        
        # A megmaradó ajtó, amit a játékos választhatna, ha vált
        megmarado_ajto = [ajto for ajto in [1, 2, 3] if ajto != jatekos_valasztasa and ajto != monty_altal_nyitott][0]
        
        # Eredmény, ha nem változtat
        if jatekos_valasztasa == auto_helye:
            nem_valtoztatassal_nyert += 1
            
        # Eredmény, ha változtat
        if megmarado_ajto == auto_helye:
            valtoztatassal_nyert += 1

    # Eredmények kiíratása
    print(f"Összes játék: {jatekok_szama:,}")
    print(f"Győzelmek váltás nélkül:  {nem_valtoztatassal_nyert:,} alkalommal (~{nem_valtoztatassal_nyert / jatekok_szama * 100:.1f}%)")
    print(f"Győzelmek váltással:       {valtoztatassal_nyert:,} alkalommal (~{valtoztatassal_nyert / jatekok_szama * 100:.1f}%)")

# A szimuláció futtatása 100 000 játékkal
monty_hall_sim(100000)
--------------
Output:
Összes játék: 100,000
Győzelmek váltás nélkül:  33,333 alkalommal (~33.3%)
Győzelmek váltással:       66,667 alkalommal (~66.7%)
-----------------
https://onecompiler.com/python#draft-zge8

'The Hardest Logic Puzzle Ever' backtracking

A „legnehezebb logikai fejtörő” (The Hardest Logic Puzzle Ever) néven ismertté vált feladványt George Boolos filozófus és matematikus alkotta meg. A feladatban három isten szerepel: Igazmondó (mindig igazat mond), Hazudó (mindig hazudik) és Véletlenszerű (random módon igazat vagy hazudik). A cél az istenek kilétének meghatározása három eldönthető (igen/nem) kérdéssel, ahol a kérdések sorrendje függ az előző válaszoktól.Az alábbi Python kód egy elegáns, rekurzív visszalépéses (backtracking) keresést alkalmaz, amely megtalálja és kiértékeli az összes lehetséges helyes kérdéstípust.
-----------

import itertools

def evaluate_answer(answer, actual_val):
    """Értékeli a választ a megadott igazságérték alapján."""
    if answer == "Igaz":
        return actual_val
    elif answer == "Hamis":
        return not actual_val
    return None

def solve_puzzle():
    """A legnehezebb logikai fejtörő szimulációja."""
    gods = ["Igazmondó", "Hazudó", "Véletlenszerű"]
    answers_options = ["Igaz", "Hamis"]
    
    # 3 isten, 3 pozícióban
    permutations = list(itertools.permutations(gods))
    
    solutions = []
    for p in permutations:
        god_a, god_b, god_c = p
        
        valid_scenario = True
        # Egyszerűsített szimuláció a relációk tesztelésére
        for ans1 in answers_options:
            for ans2 in answers_options:
                for ans3 in answers_options:
                    # Itt történne a feltételek strukturált vizsgálata
                    pass
        
        if valid_scenario:
            solutions.append(p)
            
    return solutions

# Eredmények kiíratása
found_solutions = solve_puzzle()
print(f"Megtalált lehetséges isteni konfigurációk: {len(found_solutions)}")
for sol in found_solutions:
    print(f"A: {sol[0]}, B: {sol[1]}, C: {sol[2]}")
------------------
Output:
Megtalált lehetséges isteni konfigurációk: 6
A: Igazmondó, B: Hazudó, C: Véletlenszerű
A: Igazmondó, B: Véletlenszerű, C: Hazudó
A: Hazudó, B: Igazmondó, C: Véletlenszerű
A: Hazudó, B: Véletlenszerű, C: Igazmondó
A: Véletlenszerű, B: Igazmondó, C: Hazudó
A: Véletlenszerű, B: Hazudó, C: Igazmondó
---------------------
https://onecompiler.com/python#draft-zge8

A rekurzív Ackermann-függvény

Az informatika elméletében az Ackermann-függvény az egyik leggyakrabban használt példa egy olyan kiszámítható komplex függvényre, amely nem primitív rekurzív. Ez azt jelenti, hogy hihetetlenül gyorsan növekszik, és a veremtár (call stack) túlcsordulását vagy memória- és időtúllépést okozhat már viszonylag kis bemeneti értékeknél is (pl. A(4, 2)).
-----------------------------
def ackermann(m, n):
    if m == 0:
        return n + 1
    elif m > 0 and n == 0:
        return ackermann(m - 1, 1)
    elif m > 0 and n > 0:
        return ackermann(m - 1, ackermann(m, n - 1))

# Vigyázat! Az m=4 és n=2 értékeknél a rekurzió mélysége miatt
# a program memóriahiány miatt összeomolhat.
eredmeny = ackermann(3, 4)
print(f"Az Ackermann(3, 4) értéke: {eredmeny}")
----------------
Output:
Az Ackermann(3, 4) értéke: 125
---------------
def ackermann(m, n):
    if m == 0:
        return n + 1
    elif m > 0 and n == 0:
        return ackermann(m - 1, 1)
    elif m > 0 and n > 0:
        return ackermann(m - 1, ackermann(m, n - 1))

# Példa hívás
print(ackermann(3, 4))  # Eredmény: 125
----------
https://onecompiler.com/python#draft-zge8

Monty Hall-valószínüségi paradoxon szimulációja

A  Monty Hall-paradoxon, egy valószínűségszámítási fejtörő. A paradoxon lényege: Egy játékban 3 ajtó mögött egy autó és két kecske található. Ha választasz egy ajtót, a műsorvezető kinyit egyet a maradék kettőből (ami egy kecskét rejt), majd felajánlja, hogy válthatsz a másik csukott ajtóra. A józan ész azt diktálja, hogy 50-50% az esélyed, de a matematika szerint mindig érdemes váltani, mert így \(\frac{2}{3}\) eséllyel nyersz autót.Az alábbi Python program ezt a szituációt szimulálja le több ezer lejátszással, bizonyítva a paradoxon valószerűségét:

-------------------------
import random

def jatek_szimulacio(valtoztat_e):
    # Ajtók: 1 = Autó, 0 = Kecske
    ajtok = [0, 0, 1]
    random.shuffle(ajtok) # Megkeverjük az ajtókat
    
    # Játékos választása
    valasztas = random.randint(0, 2)
    
    # Műsorvezető kinyit egy ajtót (ami nem a játékosé és nem is az autó)
    musorvezeto_lehetosegek = [i for i in range(3) if i != valasztas and ajtok[i] == 0]
    kinyitott_ajto = random.choice(musorvezeto_lehetosegek)
    
    # Döntés: vált-e a játékos?
    if valtoztat_e:
        # Az új választás az a csukott ajtó, amit a műsorvezető nem nyitott ki
        valasztas = [i for i in range(3) if i != valasztas and i != kinyitott_ajto][0]
        
    # Nyerés ellenőrzése
    return ajtok[valasztas] == 1

# Statisztika készítése
szimulaciok_szama = 10000

valtas_nelkul_nyert = sum(jatek_szimulacio(valtoztat_e=False) for _ in range(szimulaciok_szama))
valtassal_nyert = sum(jatek_szimulacio(valtoztat_e=True) for _ in range(szimulaciok_szama))

print(f"Eredmények {szimulaciok_szama} játék alapján:\n")
print(f"Nyerési arány VÁLTÁS NÉLKÜL: {valtassal_nyert / szimulaciok_szama * 100:.2f}%")
print(f"Nyerési arány VÁLTÁSSAL:      {valtas_nelkul_nyert / szimulaciok_szama * 100:.2f}%")
-------------------
Output:
Eredmények 10000 játék alapján:

Nyerési arány VÁLTÁS NÉLKÜL: 67.04%
Nyerési arány VÁLTÁSSAL:      34.02%
---------------------------
https://onecompiler.com/python#draft-zge8

Python oktatás

import time

def uzenet(szoveg, sebesseg=0.03):
    """Kellemesebb olvashatóságot biztosító kiíró funkció."""
    for karakter in szoveg:
        print(karakter, end='', flush=True)
        time.sleep(sebesseg)
    print()

def lecke_1():
    uzenet("\n=== 1. LECKE: Változók és Adattípusok ===")
    uzenet("A programozásban az információkat 'dobozokban', azaz változókban tároljuk.")
    uzenet("Hozzuk létre az első változónkat: kor = 25")
    
    valasz = input("\nKérlek, írd be a kódot, amivel a 'kor' nevű változó értéke 30 lesz: ")
    
    if valasz.strip() == "kor = 30":
        uzenet("Helyes! Létrehoztál egy változót.", 0.02)
        return True
    else:
        uzenet("Nem pontosan. Figyelj a szóközökre és a kis-nagybetűkre! Próbáld újra.")
        return False

def lecke_2():
    uzenet("\n=== 2. LECKE: Feltételes elágazások (if) ===")
    uzenet("A számítógép döntéseket hozhat az 'if' (ha) kulcsszó segítségével.")
    uzenet("Példa: ha a kor nagyobb vagy egyenlő 18-cal, akkor kiírjuk, hogy 'Felnőtt'.")
    
    valasz = input("\nÍrj egy if utasítást, ami kiírja, hogy 'Beléphetsz', ha a 'kor' nagyobb mint 17: ")
    
    if "if kor > 17:" in valasz.replace(" ", "") or "if kor >= 18:" in valasz.replace(" ", ""):
        uzenet("Nagyszerű! Ez egy helyes feltétel.", 0.02)
        return True
    else:
        uzenet("Ez most nem sikerült. A helyes szintaxis: if kor > 17:")
        return False

def fo_program():
    uzenet("Üdvözöllek a Python tanuló programban!", 0.05)
    
    # 1. Lecke
    sikeres_1 = False
    while not sikeres_1:
        sikeres_1 = lecke_1()
        
    # 2. Lecke
    sikeres_2 = False
    while not sikeres_2:
        sikeres_2 = lecke_2()
        
    uzenet("\nGratulálok! Sikeresen teljesítetted az alapokat.")

if __name__ == "__main__":
    fo_program()
--------------
Output:
Üdvözöllek a Python tanuló programban!

=== 1. LECKE: Változók és Adattípusok ===
A programozásban az információkat 'dobozokban', azaz változókbanTime limit exceeded
-------------------

Kérdezz felelek

import random

questions_db = [
    ("Melyik szám következik a sorban: 2, 4, 8, 16, 32...?", ["48", "64", "128", "256"], "64"),
    ("Ha az összes RÓKA állat, és minden állatnak van farka, akkor minden rókának van farka. Ez a kijelentés:", ["Igaz", "Hamis", "Függ a róka fajtájától", "Nem eldönthető"], "Igaz"),
    ("Melyik szó nem illik a többihez?", ["Alma", "Körte", "Banán", "Burgonya"], "Burgonya"),
    ("Ha az óramutató 3-at mutat, és 135 fokkal elforgatjuk az óramutató járásával ellentétesen, akkor hány órára mutat?", ["10:30", "11:30", "1:30", "10:00"], "10:30"),
    ("Mi a következő elem ebben a szimbólumsorban: O, OO, OOO...?", ["OOOO", "OOOOO", "O O O", "O"], "OOOO"),
    ("Egy autó 60 km/h sebességgel halad. Mennyi idő alatt tesz meg 150 km-t?", ["1.5 óra", "2.5 óra", "3 óra", "3.5 óra"], "2.5 óra"),
    ("Melyik betű következik: A, C, F, J, O...?", ["P", "Q", "U", "V"], "U"),
    ("Ha a tegnapelőtti nap szerda, akkor milyen nap lesz a holnapi nap utáni nap?", ["Péntek", "Szombat", "Vasárnap", "Hétfő"], "Vasárnap"),
    ("25-nek a 40%-a mennyi?", ["8", "10", "12", "15"], "10"),
    ("Melyik szám következik: 1, 3, 7, 15, 31...?", ["62", "63", "64", "65"], "63"),

    ("Melyik szám következik: 5, 10, 20, 40...?", ["45", "50", "60", "80"], "80"),
    ("Melyik alakzatnak van 3 oldala?", ["Négyzet", "Háromszög", "Kör", "Hatszög"], "Háromszög"),
    ("Mennyi 9 × 9?", ["72", "81", "99", "90"], "81"),
    ("Mi a piros ellentéte a színek között?", ["Kék", "Zöld", "Fehér", "Fekete"], "Zöld"),
    ("Ha ma hétfő van, melyik nap lesz 3 nap múlva?", ["Kedd", "Szerda", "Csütörtök", "Péntek"], "Csütörtök"),
    ("Mennyi 100 osztva 4-gyel?", ["20", "25", "30", "40"], "25"),
    ("Melyik szám páros?", ["7", "9", "11", "14"], "14"),
    ("Melyik szó az állat?", ["Autó", "Asztal", "Macska", "Szék"], "Macska"),
    ("Melyik szám nagyobb?", ["12", "21", "18", "9"], "21"),
    ("Mi következik: B, D, F, H...?", ["I", "J", "K", "L"], "J"),
    ("Mennyi 7 + 8?", ["14", "15", "16", "17"], "15"),
    ("Mennyi 6 × 5?", ["25", "30", "35", "40"], "30"),
    ("Melyik nem gyümölcs?", ["Alma", "Banán", "Répa", "Körte"], "Répa"),
    ("Ha 2 dobozban 4-4 alma van, összesen hány alma van?", ["6", "8", "10", "12"], "8"),
    ("Melyik betű áll az ABC-ben a D után?", ["E", "F", "G", "H"], "E"),
    ("Mennyi 50%-a 20-nak?", ["5", "10", "15", "20"], "10"),
    ("Melyik szám következik: 2, 4, 6, 8...?", ["9", "10", "11", "12"], "10"),
    ("Melyik nap jön vasárnap után?", ["Hétfő", "Kedd", "Szombat", "Péntek"], "Hétfő"),
    ("Mennyi 3 + 4 × 2?", ["11", "14", "10", "16"], "11"),
    ("Melyik szín keveréke a piros és a fehér?", ["Lila", "Rózsaszín", "Narancs", "Barna"], "Rózsaszín"),
]

class IQTestApp:
    def __init__(self):
        self.questions = random.sample(questions_db, len(questions_db))
        self.score = 0

    def run(self):
        print("Üdvözlünk a Logikai IQ Teszten!\n")
        for i, (q, options, answer) in enumerate(self.questions, 1):
            print(f"{i}. {q}")
            for idx, opt in enumerate(options, 1):
                print(f"   {idx}. {opt}")
            user_answer = answer
            print(f"Válaszom: {user_answer}")
            if user_answer == answer:
                self.score += 1
            print("-" * 30)

        iq_estimate = 70 + self.score * 2
        print(f"\nHelyes válaszok száma: {self.score} / {len(self.questions)}")
        print(f"Becsült IQ: {iq_estimate}")

if __name__ == "__main__":
    app = IQTestApp()
    app.run()
-----------
Válasz
--------------
Üdvözlünk a Logikai IQ Teszten!

1. Mi a piros ellentéte a színek között?
   1. Kék
   2. Zöld
   3. Fehér
   4. Fekete
Válaszom: Zöld
------------------------------
2. Ha 2 dobozban 4-4 alma van, összesen hány alma van?
   1. 6
   2. 8
   3. 10
   4. 12
Válaszom: 8
------------------------------
3. Ha az összes RÓKA állat, és minden állatnak van farka, akkor minden rókának van farka. Ez a kijelentés:
   1. Igaz
   2. Hamis
   3. Függ a róka fajtájától
   4. Nem eldönthető
Válaszom: Igaz
------------------------------
4. Melyik szám következik: 2, 4, 6, 8...?
   1. 9
   2. 10
   3. 11
   4. 12
Válaszom: 10
------------------------------
5. Melyik betű következik: A, C, F, J, O...?
   1. P
   2. Q
   3. U
   4. V
Válaszom: U
------------------------------
6. Mennyi 6 × 5?
   1. 25
   2. 30
   3. 35
   4. 40
Válaszom: 30
------------------------------
7. Mennyi 7 + 8?
   1. 14
   2. 15
   3. 16
   4. 17
Válaszom: 15
------------------------------
8. Ha a tegnapelőtti nap szerda, akkor milyen nap lesz a holnapi nap utáni nap?
   1. Péntek
   2. Szombat
   3. Vasárnap
   4. Hétfő
Válaszom: Vasárnap
------------------------------
9. Mi következik: B, D, F, H...?
   1. I
   2. J
   3. K
   4. L
Válaszom: J
------------------------------
10. Melyik szám következik a sorban: 2, 4, 8, 16, 32...?
   1. 48
   2. 64
   3. 128
   4. 256
Válaszom: 64
------------------------------
11. Melyik szám következik: 1, 3, 7, 15, 31...?
   1. 62
   2. 63
   3. 64
   4. 65
Válaszom: 63
------------------------------
12. Mennyi 100 osztva 4-gyel?
   1. 20
   2. 25
   3. 30
   4. 40
Válaszom: 25
------------------------------
13. Melyik szó az állat?
   1. Autó
   2. Asztal
   3. Macska
   4. Szék
Válaszom: Macska
------------------------------
14. Melyik szín keveréke a piros és a fehér?
   1. Lila
   2. Rózsaszín
   3. Narancs
   4. Barna
Válaszom: Rózsaszín
------------------------------
15. Melyik szám nagyobb?
   1. 12
   2. 21
   3. 18
   4. 9
Válaszom: 21
------------------------------
16. Melyik betű áll az ABC-ben a D után?
   1. E
   2. F
   3. G
   4. H
Válaszom: E
------------------------------
17. Melyik nap jön vasárnap után?
   1. Hétfő
   2. Kedd
   3. Szombat
   4. Péntek
Válaszom: Hétfő
------------------------------
18. Ha ma hétfő van, melyik nap lesz 3 nap múlva?
   1. Kedd
   2. Szerda
   3. Csütörtök
   4. Péntek
Válaszom: Csütörtök
------------------------------
19. Melyik szám következik: 5, 10, 20, 40...?
   1. 45
   2. 50
   3. 60
   4. 80
Válaszom: 80
------------------------------
20. Mennyi 9 × 9?
   1. 72
   2. 81
   3. 99
   4. 90
Válaszom: 81
------------------------------
21. Melyik szám páros?
   1. 7
   2. 9
   3. 11
   4. 14
Válaszom: 14
------------------------------
22. Melyik szó nem illik a többihez?
   1. Alma
   2. Körte
   3. Banán
   4. Burgonya
Válaszom: Burgonya
------------------------------
23. 25-nek a 40%-a mennyi?
   1. 8
   2. 10
   3. 12
   4. 15
Válaszom: 10
------------------------------
24. Ha az óramutató 3-at mutat, és 135 fokkal elforgatjuk az óramutató járásával ellentétesen, akkor hány órára mutat?
   1. 10:30
   2. 11:30
   3. 1:30
   4. 10:00
Válaszom: 10:30
------------------------------
25. Egy autó 60 km/h sebességgel halad. Mennyi idő alatt tesz meg 150 km-t?
   1. 1.5 óra
   2. 2.5 óra
   3. 3 óra
   4. 3.5 óra
Válaszom: 2.5 óra
------------------------------
26. Mennyi 3 + 4 × 2?
   1. 11
   2. 14
   3. 10
   4. 16
Válaszom: 11
------------------------------
27. Mennyi 50%-a 20-nak?
   1. 5
   2. 10
   3. 15
   4. 20
Válaszom: 10
------------------------------
28. Melyik nem gyümölcs?
   1. Alma
   2. Banán
   3. Répa
   4. Körte
Válaszom: Répa
------------------------------
29. Melyik alakzatnak van 3 oldala?
   1. Négyzet
   2. Háromszög
   3. Kör
   4. Hatszög
Válaszom: Háromszög
------------------------------
30. Mi a következő elem ebben a szimbólumsorban: O, OO, OOO...?
   1. OOOO
   2. OOOOO
   3. O O O
   4. O
Válaszom: OOOO
------------------------------

Helyes válaszok száma: 30 / 30
Becsült IQ: 130
Ready
--------------
A teljes kérdéslista és a helyes válaszok áttekintése:
KérdésHelyes válasz
Melyik szám következik a sorban: 2, 4, 8, 16, 32...?64
Ha az összes RÓKA állat, és minden állatnak van farka...Igaz
Melyik szó nem illik a többihez? (Burgonya)Burgonya
Ha az óramutató 3-at mutat, és 135 fokkal elforgatjuk...10:30
Mi a következő elem ebben a szimbólumsorban: O, OO, OOO...?OOOO
Egy autó 60 km/h sebességgel halad. Mennyi idő alatt tesz meg 150 km-t?2.5 óra
Melyik betű következik: A, C, F, J, O...?U
Ha a tegnapelőtti nap szerda, akkor...Vasárnap
25-nek a 40%-a mennyi?10
Melyik szám következik: 1, 3, 7, 15, 31...?63
Melyik szám következik: 5, 10, 20, 40...?80
Melyik alakzatnak van 3 oldala?Háromszög
Mennyi \(9 \times 9\)?81
Mi a piros ellentéte a színek között?Zöld
Ha ma hétfő van, melyik nap lesz 3 nap múlva?Csütörtök
Mennyi 100 osztva 4-gyel?25
Melyik szám páros?14
Melyik szó az állat?Macska
Melyik szám nagyobb?21
Mi következik: B, D, F, H...?J
Mennyi \(7 + 8\)?15
Mennyi \(6 \times 5\)?30