703 lines
16 KiB
Plaintext
703 lines
16 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## [Standard adatfolyamok](https://en.wikipedia.org/wiki/Standard_streams)\n",
|
|
"\n",
|
|
"Az operációs rendszer indításkor minden folyamathoz hozzárendel 3 szabványos adatfolyamot: a [standard bemenetet](https://docs.python.org/3/library/sys.html#sys.stdin), a [standard kimenetet](https://docs.python.org/3/library/sys.html#sys.stdout), és a [standard hibakimenetet](https://docs.python.org/3/library/sys.html#sys.stderr). Alapértelmezés szerint a standard bemenet a billentyűzettel, a standard kimenet és hibakimenet pedig a képernyővel van összekötve. Ez a beállítás módosítható, pl. a standard bemenet érkezhet egy fájlból vagy egy másik programból, a standard kimenet és hibakimenet pedig íródhat fájlba vagy továbbítódhat másik programnak."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Standard bemenet\n",
|
|
"\n",
|
|
"- A standard bemenetről adatokat bekérni az [input](https://docs.python.org/3/library/functions.html#input) függvény segítségével lehet.\n",
|
|
"- Az eredmény sztring típusú. Ha más adattípusra van szükség, akkor a konvertálni kell."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Kérek egy szöveget: alma\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'alma'"
|
|
]
|
|
},
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Sztring típusú adat beolvasása.\n",
|
|
"s = input('Kérek egy szöveget: ')\n",
|
|
"s"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Kérek egy egész számot: 23\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"23"
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Egész típusú adat beolvasása.\n",
|
|
"n = int(input('Kérek egy egész számot: '))\n",
|
|
"n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Standard kimenet és hibakimenet\n",
|
|
"\n",
|
|
"- A standard kimenetre és hibakimenetre kiírni a [print](https://docs.python.org/3/library/functions.html#print) függvény segítségével lehet."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"hello\n",
|
|
"bello\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Kiírás a standard kimenetre.\n",
|
|
"print('hello')\n",
|
|
"print('bello')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"hellobello"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Kiírás soremelés nélkül.\n",
|
|
"print('hello', end='')\n",
|
|
"print('bello', end='')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Egyetlen soremelés kiírása.\n",
|
|
"print()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Hiba történt!\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Kiírás a standard hibakimenetre.\n",
|
|
"import sys\n",
|
|
"print('Hiba történt!', file=sys.stderr)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### [Formázott kiírás](https://docs.python.org/3/tutorial/inputoutput.html#fancier-output-formatting)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Az első megoldás 2.5, a második megoldás 4.78.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Formázott kiírás f-sztringgel.\n",
|
|
"x1 = 2.5\n",
|
|
"x2 = 4.78\n",
|
|
"print(f'Az első megoldás {x1}, a második megoldás {x2}.')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"első megoldás: 2.5, második megoldás: 4.8\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Kiírás 1 tizedesjegy pontossággal.\n",
|
|
"print(f'első megoldás: {x1:.1f}, második megoldás: {x2:.1f}')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"egész szám: 42, sztring: alma\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Egész szám ill. sztring kiírása.\n",
|
|
"i = 42\n",
|
|
"s = 'alma'\n",
|
|
"print(f'egész szám: {i}, sztring: {s}')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Az első megoldás 2.500000, a második megoldás 4.780000.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Formázott kiírás % operátorral.\n",
|
|
"x1 = 2.5\n",
|
|
"x2 = 4.78\n",
|
|
"print('Az első megoldás %f, a második megoldás %f.' % (x1, x2))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Az első megoldás 2.5, a második megoldás 4.8.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Kiírás 1 tizedesjegy pontossággal.\n",
|
|
"print('Az első megoldás %.1f, a második megoldás %.1f.' % (x1, x2))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Az első megoldás 2.500\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Kiírás adott tizedesjegy pontossággal.\n",
|
|
"t = 3\n",
|
|
"print(f'Az első megoldás {x1:.{t}f}')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Az első megoldás 2.500\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Kiírás adott tizedesjegy pontossággal.\n",
|
|
"t = 3\n",
|
|
"print('Az első megoldás %.*f' % (t, x1))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"egész szám: 42, sztring: alma\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Egész szám ill. sztring kiírása.\n",
|
|
"i = 42\n",
|
|
"s = 'alma'\n",
|
|
"print('egész szám: %d, sztring: %s' % (i, s))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'Egy meg egy az 2.'"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Megjegyzés: A f-sztring ill. a % operátor\n",
|
|
"# kiírás nélkül is alkalmazható, sztringműveletként.\n",
|
|
"f'Egy meg egy az {1 + 1}.'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Vezérlési szerkezetek\n",
|
|
"\n",
|
|
"- Pythonban a vezérlési szerkezetek belsejét indentálással (azaz beljebb írással) kell jelölni.\n",
|
|
"- Emiatt garantált, hogy a program megjelenése és logikai jelentése összhangban van."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### [if utasítás](https://docs.python.org/3/reference/compound_stmts.html#the-if-statement)\n",
|
|
"\n",
|
|
"- Szintaxis:\n",
|
|
"```\n",
|
|
" if FELTÉTEL1:\n",
|
|
" UTASÍTÁS1\n",
|
|
" elif FELTÉTEL2:\n",
|
|
" UTASÍTÁS2\n",
|
|
" else:\n",
|
|
" UTASÍTÁS3\n",
|
|
"```\n",
|
|
"\n",
|
|
"- Működés:\n",
|
|
"``` \n",
|
|
" +-----------+ igaz +-----------+\n",
|
|
" --->| FELTÉTEL1 |---+-------->| UTASÍTÁS1 |-----------------------------+--->\n",
|
|
" +-----------+ | +-----------+ |\n",
|
|
" | |\n",
|
|
" | hamis +-----------+ igaz +-----------+ |\n",
|
|
" +-------->| FELTÉTEL2 |---+-------->| UTASÍTÁS2 |---+\n",
|
|
" +-----------+ | +-----------+ |\n",
|
|
" | |\n",
|
|
" | hamis +-----------+ |\n",
|
|
" +-------->| UTASÍTÁS3 |---+\n",
|
|
" +-----------+\n",
|
|
"```\n",
|
|
"- Megjegyzések:\n",
|
|
" + Több elif ág is szerepelhet.\n",
|
|
" + Az elif ágak és az else ág is elhagyható.\n",
|
|
" + Ha az utasítás 1 soros, akkor írható az if-fel elif-fel ill. az else-szel azonos sorba."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Hány éves vagy? 16\n",
|
|
"Sajnos nem adhatok sört.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Példa: Kérsz sört?\n",
|
|
"x = int(input('Hány éves vagy? '))\n",
|
|
"if x < 18:\n",
|
|
" print('Sajnos nem adhatok sört.') \n",
|
|
"else:\n",
|
|
" print('Kérsz sört?')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"a: 1\n",
|
|
"b: -3\n",
|
|
"c: 2\n",
|
|
"x1=2.0, x2=1.0\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Példa: Másodfokú egyenlet megoldó.\n",
|
|
"\n",
|
|
"# együtthatók bekérése\n",
|
|
"a = float(input('a: '))\n",
|
|
"b = float(input('b: '))\n",
|
|
"c = float(input('c: '))\n",
|
|
"\n",
|
|
"# diszkrimináns kiszámítása\n",
|
|
"d = b**2 - 4 * a * c\n",
|
|
"\n",
|
|
"# elágazás\n",
|
|
"if d > 0: \n",
|
|
" # 2 megoldás\n",
|
|
" x1 = (-b + d**0.5) / (2 * a)\n",
|
|
" x2 = (-b - d**0.5) / (2 * a)\n",
|
|
" print(f'x1={x1}, x2={x2}')\n",
|
|
"elif d == 0: \n",
|
|
" # 1 megoldás\n",
|
|
" x1 = -b / (2 * a)\n",
|
|
" print(f'x1={x1}')\n",
|
|
"else:\n",
|
|
" # 0 megoldás\n",
|
|
" print('Nincs valós megoldása.')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### [while utasítás](https://docs.python.org/3/reference/compound_stmts.html#the-while-statement)\n",
|
|
"\n",
|
|
"- Szintaxis:\n",
|
|
"```\n",
|
|
" while FELTÉTEL:\n",
|
|
" UTASÍTÁS\n",
|
|
"```\n",
|
|
"\n",
|
|
"- Működés:\n",
|
|
"```\n",
|
|
" +----------+ igaz\n",
|
|
" +<-----| UTASÍTÁS |--------+\n",
|
|
" | +----------+ |\n",
|
|
" | |\n",
|
|
" | +----------+ | hamis\n",
|
|
" ---+----->| FELTÉTEL |--------+-------->\n",
|
|
" +----------+ \n",
|
|
"```\n",
|
|
"- Megjegyzések:\n",
|
|
" + Egy jól megírt program esetén az utasítás a feltételt előbb-utóbb hamisra állítja. (Ellenkező esetben, ha a feltétel igaz, akkor az is marad, így végtelen ciklus keletkezik.)\n",
|
|
" + Akkor érdemes while ciklust alkalmazni, ha a ciklus elején még nem tudjuk pontosan az iterációk számát."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Hány pontot értél el? 10\n",
|
|
"Sajnos nem sikerült. Tanulj még!\n",
|
|
"Hány pontot értél el? 8\n",
|
|
"Sajnos nem sikerült. Tanulj még!\n",
|
|
"Hány pontot értél el? 12\n",
|
|
"Gratulálok, átmentél!\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Példa: Móricka a programozásvizsgán.\n",
|
|
"while int(input('Hány pontot értél el? ')) < 12:\n",
|
|
" print('Sajnos nem sikerült. Tanulj még!')\n",
|
|
"print('Gratulálok, átmentél!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Példa végtelen ciklusra.\n",
|
|
"#while True:\n",
|
|
"# pass # üres utasítás"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### [for utasítás](https://docs.python.org/3/reference/compound_stmts.html#the-for-statement)\n",
|
|
"\n",
|
|
"- Szintaxis:\n",
|
|
"```\n",
|
|
" for ELEM in SZEKVENCIA:\n",
|
|
" UTASÍTÁS\n",
|
|
"```\n",
|
|
"\n",
|
|
"- Működés:\n",
|
|
"```\n",
|
|
" +----------+ van még elem\n",
|
|
" +<-----| UTASÍTÁS |<----------------+ \n",
|
|
" | +----------+ |\n",
|
|
" | |\n",
|
|
" | +---------------------+ |\n",
|
|
" ------+----->| vegyük a SZEKVENCIA |------+------------------->\n",
|
|
" | következő ELEMÉt | nincs több elem\n",
|
|
" +---------------------+\n",
|
|
"```\n",
|
|
"- Megjegyzések:\n",
|
|
" + A szekvencia lehet egész számok folytonos sorozata, de lehet más is (pl. sztring, tuple, lista, halmaz, szótár, megnyitott fájl).\n",
|
|
" + Akkor érdemes for ciklust alkalmazni, ha A) a szekvencia már rendelkezésre áll vagy B) a ciklus kezdetekor tudjuk az iterációk számát."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"range(0, 5)"
|
|
]
|
|
},
|
|
"execution_count": 20,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Értéktartomány (range) létrehozása.\n",
|
|
"r = range(5)\n",
|
|
"r"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[0, 1, 2, 3, 4]"
|
|
]
|
|
},
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"list(r)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]"
|
|
]
|
|
},
|
|
"execution_count": 22,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"list(range(10, 20))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[3, 5, 7, 9, 11]"
|
|
]
|
|
},
|
|
"execution_count": 23,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"list(range(3, 12, 2))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"n: 5\n",
|
|
"1\n",
|
|
"4\n",
|
|
"9\n",
|
|
"16\n",
|
|
"25\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Példa: Első n négyzetszám kiírása.\n",
|
|
"n = int(input('n: '))\n",
|
|
"for i in range(1, n + 1):\n",
|
|
" print(i**2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"n: 5\n",
|
|
"*****"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Példa: n darab * karakter kiírása.\n",
|
|
"n = int(input('n: '))\n",
|
|
"for i in range(n):\n",
|
|
" print('*', end='')"
|
|
]
|
|
}
|
|
],
|
|
"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
|
|
}
|