1016 lines
21 KiB
Plaintext
1016 lines
21 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## [Modulok](https://docs.python.org/3/tutorial/modules.html) és [csomagok](https://docs.python.org/3/tutorial/modules.html#packages)\n",
|
|
"\n",
|
|
"**Modul**: Python nyelvű fájl.\n",
|
|
"- Definíciókat és utasításokat tartalmaz.\n",
|
|
"- Ha a modulhoz az `xyz.py` fájl tartozik, akkor a modulra `xyz` néven lehet hivatkozni.\n",
|
|
"- A modulok más Python programokból importálhatók.\n",
|
|
"\n",
|
|
"**Csomag**: Modulok gyűjteménye.\n",
|
|
"- Egy csomag alcsomagokat/almodulokat is tartalmazhat. A hierarchiát a csomagon belüli könyvtárszerkezet határozza meg.\n",
|
|
"- A standard csomagok és modulok a standard könyvtárban találhatók, és nem igényelnek telepítést.\n",
|
|
"- A külső csomagok gyűjtőhelye a PyPI (https://pypi.python.org/pypi)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Modul/csomag importálása.\n",
|
|
"import random"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"77"
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"random.randint(1, 100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"15"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Függvény importálása egy modulból/csomagból.\n",
|
|
"from random import randint\n",
|
|
"randint(1, 100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"-0.24241318164150646"
|
|
]
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Modul/csomag teljes tartalmának importálása. (Megjegyzés: Ez a megoldás általában kerülendő.)\n",
|
|
"from random import *\n",
|
|
"normalvariate(0, 1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'/tmp'"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Függvény importálása almodulból/alcsomagból.\n",
|
|
"from os.path import dirname\n",
|
|
"dirname('/tmp/pistike.txt')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Modul/csomag importálása rövidített néven.\n",
|
|
"import numpy as np # a numpy csomag importálása np néven\n",
|
|
" # (a numpy külső csomag)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"1.0"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"np.cos(0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Fejezetek a [standard könyvtárból](https://docs.python.org/3/library/index.html) I.\n",
|
|
"\n",
|
|
"- A Python standard könyvtára több mint 200 csomagot ill. modult tartalmaz. Szabványos megoldást biztosít a programozás mindennapjaiban felmerülő számos feladatra.\n",
|
|
"- A kurzuson csak a standard könyvtár egy kis részének az áttekintésére vállalkozunk.\n",
|
|
"- A jó programozó nem találja fel újra a spanyolviaszt. Ha lehetséges, akkor a standard könyvtár eszközeivel oldja meg a feladatot."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### [datetime](https://docs.python.org/3/library/datetime.html)\n",
|
|
"- Dátum- és időkezelésre biztosít eszközöket.\n",
|
|
"- Támogatja a dátumaritmetikát, kezeli az időzónákat, óraátállítást, szökőéveket stb.\n",
|
|
"- Időzónamentes és időzónával rendelkező dátumokat is megenged."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import datetime"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"datetime.datetime(2021, 3, 8, 9, 0, 10, 300)"
|
|
]
|
|
},
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Mikroszekundum pontosságú időpont megadása.\n",
|
|
"dt1 = datetime.datetime(2021, 3, 8, 9, 0, 10, 300)\n",
|
|
"dt1"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"datetime.datetime"
|
|
]
|
|
},
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"type(dt1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"datetime.date(2020, 12, 6)"
|
|
]
|
|
},
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Nap pontosságú dátum megadása.\n",
|
|
"d1 = datetime.date(2020, 12, 6)\n",
|
|
"d1"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"datetime.date"
|
|
]
|
|
},
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"type(d1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Időpont aritmetika.\n",
|
|
"dt2 = datetime.datetime(2021, 1, 15, 12, 0, 10)\n",
|
|
"diff = dt1 - dt2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"datetime.timedelta(days=51, seconds=75600, microseconds=300)"
|
|
]
|
|
},
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"diff"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"datetime.timedelta"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"type(diff)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"51\n",
|
|
"75600\n",
|
|
"300\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Az eltérés 51 nap + 75600 másodperc 300 mikroszekundum.\n",
|
|
"print(diff.days)\n",
|
|
"print(diff.seconds)\n",
|
|
"print(diff.microseconds)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"4482000.0003"
|
|
]
|
|
},
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Másodpercben kifejezve:\n",
|
|
"diff.total_seconds()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"datetime.datetime(2021, 3, 16, 4, 0)"
|
|
]
|
|
},
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Adjunk hozzá 8 órát egy időponthoz!\n",
|
|
"datetime.datetime(2021, 3, 15, 20, 0) + datetime.timedelta(0, 8 * 3600)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"44261"
|
|
]
|
|
},
|
|
"execution_count": 19,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Aritmetika nap pontosságú dátumokkal.\n",
|
|
"(datetime.date(2021, 3, 8) - datetime.date(1900, 1, 1)).days"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Feladat\n",
|
|
"- Kérjünk be egy dátumot (év, hónap, nap), majd írjuk ki azt, hogy a dátum hányadik nap az adott évben!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Kérek egy dátumot (éééé.hh.nn): 2023.01.02\n",
|
|
"2\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Megoldás\n",
|
|
"import datetime\n",
|
|
"\n",
|
|
"s = input('Kérek egy dátumot (éééé.hh.nn): ')\n",
|
|
"t = s.split('.')\n",
|
|
"dt = datetime.date(int(t[0]), int(t[1]), int(t[2]))\n",
|
|
"n = (dt - datetime.date(dt.year, 1, 1)).days + 1\n",
|
|
"print(n)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Feladat\n",
|
|
"- Adott egy lista, amelyben személyek neve és születési dátuma szerepel! Készítsünk életkor szerint növekvően rendezett listát a személyek adatairól!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[('Békés Farkas', datetime.date(2014, 7, 30)),\n",
|
|
" ('Git Áron', datetime.date(1995, 2, 28)),\n",
|
|
" ('Har Mónika', datetime.date(1995, 2, 27)),\n",
|
|
" ('Bank Aranka', datetime.date(1980, 9, 1)),\n",
|
|
" ('Wincs Eszter', datetime.date(1980, 5, 7)),\n",
|
|
" ('Trab Antal', datetime.date(1961, 4, 1)),\n",
|
|
" ('Gipsz Jakab', datetime.date(1957, 11, 21))]"
|
|
]
|
|
},
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Megoldás\n",
|
|
"import datetime\n",
|
|
"\n",
|
|
"people = [\n",
|
|
" # név, születési dátum\n",
|
|
" ('Gipsz Jakab', datetime.date(1957, 11, 21)),\n",
|
|
" ('Wincs Eszter', datetime.date(1980, 5, 7)),\n",
|
|
" ('Békés Farkas', datetime.date(2014, 7, 30)),\n",
|
|
" ('Har Mónika', datetime.date(1995, 2, 27)),\n",
|
|
" ('Trab Antal', datetime.date(1961, 4, 1)),\n",
|
|
" ('Git Áron', datetime.date(1995, 2, 28)),\n",
|
|
" ('Bank Aranka', datetime.date(1980, 9, 1))\n",
|
|
"]\n",
|
|
"sorted(people, key=lambda p: p[1], reverse=True)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"datetime.datetime(2023, 11, 7, 11, 38, 32, 206260)"
|
|
]
|
|
},
|
|
"execution_count": 22,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Aktuális idő lekérdezése.\n",
|
|
"dt = datetime.datetime.now()\n",
|
|
"dt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023\n",
|
|
"11\n",
|
|
"7\n",
|
|
"11\n",
|
|
"38\n",
|
|
"32\n",
|
|
"206260\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# A datetime objektum mezőinek lekérése.\n",
|
|
"print(dt.year)\n",
|
|
"print(dt.month)\n",
|
|
"print(dt.day)\n",
|
|
"print(dt.hour)\n",
|
|
"print(dt.minute)\n",
|
|
"print(dt.second)\n",
|
|
"print(dt.microsecond)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"1"
|
|
]
|
|
},
|
|
"execution_count": 24,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# A hét napjának lekérdezése (0=hétfő, ..., 6=vasárnap):\n",
|
|
"dt.weekday()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Feladat\n",
|
|
"- Hány db péntek 13-adika volt a 20. században (azaz 1901.01.01-től 2000.12.31-ig)?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"171\n",
|
|
"171\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import datetime\n",
|
|
"\n",
|
|
"# Megoldás 1: a 20. század összes napját megvizsgáljuk.\n",
|
|
"db = 0\n",
|
|
"dt = datetime.date(1901, 1, 1)\n",
|
|
"while dt <= datetime.date(2000, 12, 31):\n",
|
|
" if dt.weekday() == 4 and dt.day == 13:\n",
|
|
" db += 1\n",
|
|
" dt += datetime.timedelta(1)\n",
|
|
"print(db)\n",
|
|
"\n",
|
|
"# Megoldás 2: csak minden érintett hónap 13. napját vizsgáljuk meg.\n",
|
|
"db = 0\n",
|
|
"for y in range(1901, 2001): # végigmegyünk az éveken\n",
|
|
" for m in range(1, 13): # azon belül a hónapokon\n",
|
|
" if datetime.date(y, m, 13).weekday() == 4:\n",
|
|
" db += 1\n",
|
|
"print(db)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### [time](https://docs.python.org/3/library/time.html)\n",
|
|
"- Alacsony szintű időkezelésre ad eszközöket, ide tartozik pl. az időtartam mérés és a várakozás."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import time"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"1699353589.2763045"
|
|
]
|
|
},
|
|
"execution_count": 27,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Aktuális idő lekérdezése (UNIX időbélyegként).\n",
|
|
"time.time() # 1970-01-01 óta eltelt idő, másodpercben"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"s=1.64493306684777, dt=0.23554015159606934\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Időtartam mérés.\n",
|
|
"t0 = time.time()\n",
|
|
"s = 0\n",
|
|
"for k in range(1, 1000000):\n",
|
|
" s += 1 / k**2\n",
|
|
"dt = time.time() - t0\n",
|
|
"print(f's={s}, dt={dt}')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Várakozás 2 másodpercig.\n",
|
|
"time.sleep(2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### [random](https://docs.python.org/3/library/random.html)\n",
|
|
"- Álvéletlenszám-generálásra biztosít eszközöket."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import random"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 31,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"60"
|
|
]
|
|
},
|
|
"execution_count": 31,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Egész szám sorsolása egy intervallumból.\n",
|
|
"random.randint(1, 100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"93"
|
|
]
|
|
},
|
|
"execution_count": 32,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Ha a felső határt ki akarjuk zárni:\n",
|
|
"# 1 és 99 közötti véletlen egész számot generál.\n",
|
|
"random.randrange(1, 100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"-1.6302778550631207"
|
|
]
|
|
},
|
|
"execution_count": 33,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Valós szám sorsolása egy intervallumból.\n",
|
|
"random.uniform(-2.2, 5.4)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 34,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"0.675777119325788"
|
|
]
|
|
},
|
|
"execution_count": 34,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Sorsolás standard normális eloszlásból.\n",
|
|
"random.normalvariate(0, 1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"82\n",
|
|
"15\n",
|
|
"4\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Véletlenszám generátor állapotának beállítása.\n",
|
|
"random.seed(42)\n",
|
|
"print(random.randint(1, 100))\n",
|
|
"print(random.randint(1, 100))\n",
|
|
"print(random.randint(1, 100))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 36,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"82\n",
|
|
"15\n",
|
|
"4\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"random.seed(42)\n",
|
|
"print(random.randint(1, 100))\n",
|
|
"print(random.randint(1, 100))\n",
|
|
"print(random.randint(1, 100))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Az állapot visszaállítása véletlenszerűre.\n",
|
|
"random.seed()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 38,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"82\n",
|
|
"82\n",
|
|
"15\n",
|
|
"15\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Véletlenszám generátor objektum létrehozása.\n",
|
|
"r1 = random.Random(42)\n",
|
|
"r2 = random.Random(42)\n",
|
|
"\n",
|
|
"print(r1.randint(1, 100))\n",
|
|
"print(r2.randint(1, 100))\n",
|
|
"print(r1.randint(1, 100))\n",
|
|
"print(r2.randint(1, 100))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 39,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'alma'"
|
|
]
|
|
},
|
|
"execution_count": 39,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Elem kisorsolása egy szekvenciából.\n",
|
|
"random.choice(['alma', 'körte', 'szilva'])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 40,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[49, 58, 30, 62, 88]"
|
|
]
|
|
},
|
|
"execution_count": 40,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Visszatevés nélküli mintavétel.\n",
|
|
"random.sample(range(1, 91), 5)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 41,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['körte', 'alma', 'szilva']"
|
|
]
|
|
},
|
|
"execution_count": 41,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Véletlen keverés.\n",
|
|
"l = ['alma', 'körte', 'szilva']\n",
|
|
"random.shuffle(l)\n",
|
|
"l"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Feladat\n",
|
|
"- Rakjuk egy szöveg karaktereit véletlenszerű sorrendbe!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 42,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"ailntcaspa\n",
|
|
"aclsitpaan\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"s = 'palacsinta'\n",
|
|
"\n",
|
|
"# Megoldás 1: random.sample-vel\n",
|
|
"print(''.join(random.sample(s, len(s))))\n",
|
|
"\n",
|
|
"# Megoldás 2: random.shuffle-vel\n",
|
|
"l = list(s)\n",
|
|
"random.shuffle(l)\n",
|
|
"print(''.join(l))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Feladat\n",
|
|
"- Szimuláljunk egy 10000 hosszú dobás sorozatot 2 db dobókockával, majd írjuk ki azt, hogy az esetek hány százalékában volt a dobások összege 2, 3, ..., 12!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 43,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" 2: 2.45\n",
|
|
" 3: 5.66\n",
|
|
" 4: 8.45\n",
|
|
" 5: 11.48\n",
|
|
" 6: 14.17\n",
|
|
" 7: 16.33\n",
|
|
" 8: 13.72\n",
|
|
" 9: 11.13\n",
|
|
"10: 8.20\n",
|
|
"11: 5.64\n",
|
|
"12: 2.77\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Megoldás\n",
|
|
"n = 10000\n",
|
|
"freq = [0] * 13\n",
|
|
"for i in range(n):\n",
|
|
" # dobások szimulálása\n",
|
|
" s = random.randint(1, 6) + random.randint(1, 6)\n",
|
|
" # megfelelő számláló növelése\n",
|
|
" freq[s] += 1 \n",
|
|
" \n",
|
|
"# kiírás\n",
|
|
"for s in range(2, 13):\n",
|
|
" print(f'{s:2}: {freq[s] / n * 100:.2f}')"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.11.3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|