Files
2024-09-21 11:20:44 +02:00

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
}