{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Előadás anyag\n", "Nézzük meg a 8. heti előadás anyagát tartalmazó Jupyter notebook (08_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 programot, amely szimulál egy n hosszú pénzfeldobás sorozatot, majd kiírja a fejek és írások darabszámát!" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "51\n", "49\n" ] } ], "source": [ "# 1. megoldás\n", "import random\n", "n = 100\n", "nheads = 0\n", "ntails = 0\n", "for i in range(n):\n", " x = random.choice('HT')\n", " if x == 'H': \n", " nheads += 1\n", " else:\n", " ntails += 1\n", "print(ntails)\n", "print(nheads)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "53\n", "47\n" ] } ], "source": [ "# 2. megoldás\n", "import random\n", "n = 100\n", "x = [random.choice('HT') for i in range(n)]\n", "print(x.count('H'))\n", "print(x.count('T'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Oldjuk meg a feladatot 'fej' és 'írás' dobások használatával!" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "54\n", "46\n" ] } ], "source": [ "x = [random.choice([\"fej\", \"írás\"]) for i in range(100)]\n", "\n", "print(x.count(\"fej\"))\n", "print(x.count(\"írás\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. feladat\n", "\n", "Készítsünk programot, amely szimulál egy n hosszú pénzfeldobás sorozatot, majd kiírja a leghosszabb fej ill. írás sorozat hosszát!" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "T T T T T H H T H H H T T H H H T T H H\n", "3\n", "5\n" ] } ], "source": [ "import random\n", "\n", "def longest_sequence(x, sign):\n", " maxlen = 0\n", " actlen = 0\n", " for xi in x:\n", " if xi == sign:\n", " actlen += 1\n", " if actlen > maxlen:\n", " maxlen = actlen\n", " else:\n", " actlen = 0\n", " return maxlen\n", "\n", "n = 20\n", "x = [random.choice('HT') for i in range(n)]\n", "\n", "print(' '.join(x))\n", "print(longest_sequence(x, 'H'))\n", "print(longest_sequence(x, 'T'))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['T', 'H', 'H', 'T', 'T', 'H', 'H', 'H', 'H', 'T']\n", "4\n" ] } ], "source": [ "# ... a leghosszabb sorozat hossza (nem külön-külön számolva)\n", "\n", "import random\n", "n = 10\n", "sorsolas = [random.choice('HT') for i in range(n)]\n", "\n", "sorozat = 1\n", "sorozat_max = 1\n", "for x in range(1, n):\n", " if sorsolas[x] == sorsolas[x - 1]:\n", " sorozat += 1\n", " else:\n", " sorozat = 1\n", " \n", " if sorozat > sorozat_max:\n", " sorozat_max = sorozat\n", " \n", "print(sorsolas)\n", "print(sorozat_max)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Módosítsuk a megoldást úgy, hogy megadjuk azt is, hogy hány db ilyen (maximális hosszú) sorozat létezett a dobássorozatban!" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['H', 'H', 'H', 'T', 'T', 'T', 'H', 'T', 'H', 'H']\n", "3\n", "2\n" ] } ], "source": [ "# ... a leghosszabb sorozat hossza (nem külön-külön számolva)\n", "\n", "import random\n", "n = 10\n", "sorsolas = [random.choice('HT') for i in range(n)]\n", "\n", "sorozat = 1\n", "sorozat_max = 1\n", "db = 0\n", "for x in range(1, n):\n", " if sorsolas[x] == sorsolas[x - 1]:\n", " sorozat += 1\n", " else:\n", " sorozat = 1\n", " \n", " if sorozat > sorozat_max:\n", " sorozat_max = sorozat\n", " db = 0\n", "\n", " if sorozat == sorozat_max:\n", " db+= 1\n", " \n", "print(sorsolas)\n", "print(sorozat_max)\n", "print(db)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Az előadás anyagához kapcsolódó feladatok\n", "- Módosítsuk a személyek és születési dátumok rendezett listáját megadó megoldást úgy, hogy az adott személyeknek ne a születési dátumát, hanem az életkorát (a betöltött évek száma) jelenítsük meg!\n", "- Oldjuk meg a két kockával dobott dobásösszeg gyakoriságok meghatározását szótár segítségével!\n", "- Hasonlítsuk össze (azaz 'mérjük meg') a 20. századi péntek 13-kák számát meghatározó megoldások futási idejét!" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Feladatok\n", "- Készítsünk egy saját modult (azaz egy py kiterjesztésű szövegfájlt, amiben legyen pl. egy saját függvény)! Használjuk ezt a saját modult (azaz hívjuk meg pl. a modulban lévő függvényt)! \n", "- Határozzuk meg és írjuk ki azt, hogy hány napot éltünk!\n", "- Generáljunk véletlenszerűen egy ezévi (helyes) dátumot!\n", "- Készítsünk programot, amelyik 'kő-papír-olló' játékot szimulál két játékos között! Generáljunk n db véletlen 'választás-párt', értékeljük ki ezeket és adjuk meg, hogy hányszor nyert az első, hányszor a második játékos, ill. hány döntetlen született!" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7924\n" ] } ], "source": [ "import datetime\n", "import random\n", "\n", "\n", "born = datetime.date(2003,3,27)\n", "today = datetime.date.today()\n", "dif = today - born\n", "\n", "print(dif.days)\n", "\n", "rnum = datetime.date(2024, random.randint(1,12), random.randint(1,27))\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " ### Házi feladatok\n", " - Az ember nem betűnként olvas, hanem valahogy másképp (pl. 'ránézéssel'). Ennek igazolására alakítsunk át egy mondatot (amelyben a szavak csak kisbetűket tartalmaznak és a szavak között pontosan egy db szóköz található) úgy, hogy a szavak sorrendjét megtartjuk, de a szavakat átalakítjuk! A legfeljebb 3 betűt tartalmazó szavak maradjanak változatlanok, a hosszabbak esetén az első és utolsó betűt a helyükön hagyva, a többi betűt keverjük meg véletlenszerűen! Nézzük meg, hogy el tudjuk-e olvasni az átalakított mondatot is kb. ugyanolyan gyorsan, mint az eredetit! Pl. 'na el tudod ezt is gyorsan olvasni' => 'na el tdoud ezt is gsryaon onslvai'.\n", " - Nehezítsük az előző feladatot a magyar két (pl. 'gy', 'sz'), ill. hárombetűs ('dzs') 'betűk' kezelésével! Az ilyen 'betűket' egy betűként kezeljük! Pl. a 'gyász' szó így 'hárombetűs' szó lévén nem fog megváltozni, de a 'lándzsa' szó 'ötbetűs', aminek egy átalakítása lehet a 'ldzsána' szó (ahol a 'dzs' betű egyben maradt)!" ] } ], "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 }