{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Előadás anyag\n", "Nézzük meg a 6. heti előadás anyagát tartalmazó Jupyter notebook (06_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. feladat\n", "Készítsünk különbségsorozatot az $a_1$, ..., $a_n$ számsorozatból, ahol a különbségsorozat $i$. eleme $a_{i+1}$ - $a_i$! Pl: 2, 5, 7, 15 => 3, 2, 8" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[3, 2, 8]\n", "[3, 2, 8]\n", "[3, 2, 8]\n" ] } ], "source": [ "# A számsorozat\n", "a = [2, 5, 7, 15]\n", "\n", "# 1. megoldás (nem használva a 6. előadás dolgait))\n", "diff = []\n", "for i in range(len(a) - 1):\n", " diff.append(a[i + 1] - a[i])\n", "print(diff)\n", "\n", "# 2. megoldás (comprehension és indexelés)\n", "diff = [a[i + 1] - a[i] for i in range(len(a) - 1)]\n", "print(diff)\n", "\n", "# 3. megoldás (comprehension, unpacking, slicing és zip)\n", "diff = [x - y for x, y in zip(a[1:], a[:-1])]\n", "print(diff)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Feladatok\n", "Készítsünk programokat az alábbi feladatokra! A megoldásoknál használjuk az előadáson elhangzottakat (pl. comprehension, haladó indexelés, kicsomagolás, zip, ...)!\n", "- Állítsuk elő comprehension-nel a [100, 90, 80, 70, 60, 50, 40, 30, 20, 10] listát!\n", "- Gyűjtsük ki feltételes comprehension-nel egy számokból álló lista pozitív elemeit egy új listába! Pl. [-1, 2, 0, 3] => [2, 3] \n", "- Fordítsuk meg egy sztring karaktereinek sorrendjét haladó indexeléssel! Pl. 'abc' => 'cba'.\n", "- Készítsünk szótárat egy `KULCS_1,ÉRTÉK_1, ... KULCS_n,ÉRTÉK_n` formátumú sztringből! Pl. 'alma,10,körte,20,barack,30' => {'alma': 10, 'körte': 20, 'barack': 30} (Tipp: a sztring darabolásához használjuk a split metódust!)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[100, 90, 80, 70, 60, 50, 40, 30, 20, 10]\n", "[2, 3]\n", "{'alma': 10, 'körte': 20, 'barack': 30}\n" ] }, { "ename": "TypeError", "evalue": "len() takes exactly one argument (0 given)", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[7], line 20\u001b[0m\n\u001b[1;32m 16\u001b[0m mydict\u001b[38;5;241m.\u001b[39mupdate({mylist[i] : \u001b[38;5;28mint\u001b[39m(mylist[i\u001b[38;5;241m+\u001b[39m\u001b[38;5;241m1\u001b[39m])})\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28mprint\u001b[39m(mydict)\n\u001b[0;32m---> 20\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__doc__\u001b[39m)\n", "\u001b[0;31mTypeError\u001b[0m: len() takes exactly one argument (0 given)" ] } ], "source": [ "tomb = [i*10 for i in range(10, 0,-1)]\n", "\n", "print(tomb)\n", "\n", "\n", "lista1 = [-1, 2, 0, 3]\n", "lista2 = [i for i in lista1 if i > 0]\n", "\n", "print(lista2)\n", "\n", "todict = 'alma,10,körte,20,barack,30'\n", "mylist = todict.split(',')\n", "mydict = {}\n", "\n", "for i in range(0, len(mylist)-1, 2):\n", " mydict.update({mylist[i] : int(mylist[i+1])})\n", "\n", "print(mydict)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Házi feladatok\n", "Készítsünk programokat az alábbi feladatokra! A megoldásoknál használjuk az előadáson elhangzottakat (pl. sum, min, max, sorted függvények)!\n", "- Egy műkorcsolyaversenyen N (>=1) versenyző indul és M (>=3) bíró pontoz. Minden versenyző minden bírótól pontosan egy db pontot kap (ami 0-tól 6-ig egy valós szám)! Ismerjük a versenyzők nevét, nemzetiségét (3 betűs sztring), és a bíróktól kapott pontjaikat. Számítsuk ki a versenyzők átlagpontjait, majd készítsünk olyan listát, amelyben a versenyzők összes adata (név, nemzetiség, pontok, átlagpont) szerepel! Minden versenyző legyen külön sorban, a pontok két tizedesjeggyel jelenjenek meg, egymás alá igazítva!\n", "- Oldjuk meg a feladatot úgy is, hogy az átlagpontba az adott versenyző legnagyobb és legkisebb pontjának egy-egy előfordulását nem számítjuk be (a bírók részrehajlását elkerülendő)!\n", "- Oldjuk meg a feladatot úgy is, hogy a lista eredménylista legyen (azaz olyan lista, amely az átlagpont szerint csökkenően rendezett)!" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }