321 lines
8.6 KiB
Plaintext
321 lines
8.6 KiB
Plaintext
{
|
|
"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
|
|
}
|