{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "anaconda-cloud": {}, "colab": { "name": "kl_py_kezdolepes.ipynb", "provenance": [], "collapsed_sections": [ "zzHhy0KGaYim", "ihWv2d17aYi-", "Nli69a3MaYjn", "Fn89WIvxaYlS" ], "include_colab_link": true }, "hide_input": false, "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.7.4" }, "latex_envs": { "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 0 }, "name": "python-bevezeto.ipynb" }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "id": "LrTbC1wkP4yd", "colab_type": "text" }, "source": [ "
\n", " \n", " \n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "# Python kezdő lépések, változók\n", "\n", "
\n", " \n", " \n", "
\n", "\n", " \n", " \n", "
\n", "\n", " \n", " \n", "
\n" ] }, { "cell_type": "markdown", "metadata": { "id": "QZxJDkFpP4yh", "colab_type": "text" }, "source": [ "\n", "## Programozási alapfogalmak \n", "\n", "\n", "• Algoritmus: Valamely feladat megoldására alkalmas véges hosszú lépéssorozat. \n", "\n", "• Adatszerkezet: Adatelemek tárolására és hatékony használatára szolgáló séma (példa: lista). \n", "\n", "• Programozási nyelv: Szigorú szabályokra épülő nyelv, melynek segítségével az ember képes a számítógép felé kommunikálni az utasításait. \n", "\n", "• Programozás: Algoritmusok és adatszerkezetek megtervezése illetve megvalósításuk valamilyen programozási nyelven.\n", "\n", "---\n", "\n", "### Objektum tipusok, jelelmzők\n", "\n", "\n", "\n", "#### Iterálható objektum:\n", "Olyan objektum, amelyből más objektumokat tudunk kinyerni. A kiolvasott objektumokat a továbbiakban elemnek fogjuk nevezni. Az elemeket az objektumon történő iterálással, más kifejezéssel az objektum bejárásával egymásután sorban elérhetjük.\n", "\n", "Pl.: listák, bájt-tömbök, karakterláncok, sokaságok, szótárak, generátorobjektumok.\n", "\n", "\n", "#### Indexelhető objektum:\n", "Az ilyen objektum elemeit a természetes számok sorozatának 0-val induló és eggyel növekedő tagjaival párosíthatjuk, s az ezekre történő hivatkozással (indexeléssel) az elemeket el is érhetjük. Ha egy objektum indexelhető, akkor iterálható is, de egy iterálható objektum nem feltétlen indexelhető, az indexelhetőség egy erősebb megszorítás. \n", "\n", "Pl.: listák, karakterláncok (string), sokaságok (tuple-k), bájt-tömbök (bytes) stb. \n", "\n", "\n", "#### Nem indexelhető objektum: \n", "\n", "Pl.: készletek(set), szótárak(dir), egész számok stb.\n", "\n", "\n", "\n", "#### Leképező (mapping) szótár típusú objektum:\n", "Ezen objektum elemeit kulcs-érték párok alkotják. Egy elemhez tartozó értéket a kulcs indexszerű megadásával érhetünk el. Kulcs nagyon sokféle objektum lehet, például számok, karakterláncok stb., és ezek keverten is alkalmazhatók. Ezek az objektumok a kulcsok szerint iterálhatók.\n", "\n", "Példa: szótár(dir).\n", "\n", "---\n", "\n", "### Progrmanyelvi jellemzők\n", "\n", "\n", "• A program blokkokat a sorok behúzásával jelöljük. \n", "A fordított perjel (\\) segítségével egy hosszú sor kétfelé törhető.\n", "\n", "\n", "• A for és while szerkezetekhez tartozhat egy else ág is, amely akkor hajtódik végre, ha a ciklustörzsből nem történt kilépés a break utasítással. \n", "\n", "\n", "• enumerate (magyarul \"felsorol\"): Az iterálható bejárható objektum elemeit szolgáltatja egymásután, és minden elemhez ad egy sorszámot is, a sorszámozás 0-val kezdődik. Ha az objektum indexelhető, akkor a sorszám megegyezik az indexszel.\n", "\n", "\n", "\n", "• len(bejárható): A bejárható objektum elemszámát adja meg. \n", "\n", "• range(n): 0-tól n-1 -ig szolgáltatja az egész számokat egymásután. A range(m,n,l) kifejezésben az egész számok sorozata m-től indul, n-1-ig tart, és l a növekményük. A range(m,n) esetén a lépésköz 1 lesz. \n", "\n", "\n", "• True, False: Az igaz és a hamis értékek.\n", " \n", " ---\n" ] }, { "cell_type": "code", "metadata": { "id": "GzPMb365P4yi", "colab_type": "code", "colab": {}, "outputId": "eb18f217-4930-448d-9d28-8aa22cd54739" }, "source": [ "## Automatikus összefűzés (nincs külön operátor) \n", "print ('Kicsi' \" Dani \" \"\"\"játszik\"\"\" ) ## Kicsi Dani játszik // közvetlen összefüzés\n", "\n", "print ('Nagyobb', \" Dani \", 2020, \"\"\"-ban is \\\n", "játszik\"\"\" ) ## Nagyobb Dani 2020 -ban is játszik // vesszőnél space is megjelenik + töbsorba tördelés a \\ jel\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Kicsi Dani játszik\n", "Nagyobb Dani 2020 -ban is játszik\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "mJqp8_DyP4ym", "colab_type": "text" }, "source": [ "\n", "---\n", "\n", "## A Jupyter Notebook környezet\n", "\n", "\n", "AJupyterNotebook egy WEB böngésző alapú interaktívm unkakörnyezet. \n", "\n", "Elsődlegesen a Pythonnyelvhez fejlesztették ki, de más programozási nyelvekkel is használható. \n", "\n", "Egy notebook cellákból áll, a cellák lehetnek szöveges (Markdown) vagy kód típusúak. \n", "\n", "A kódcellákat le lehet futtatni, akár többször is egymás után. A futtatás eredménye megjelenik az adott kódcella utáni kimenetben.\n", "\n", "\n", "\n", "### A notebook használata kétféle üzemmódban történik:\n", "\n", "\n", "#### Parancsmódban \n", "tudjuk elvégezni a cellaszintű műveleteket (pl. új cella beszúrása, cella törlése, cellák mozgatása, lépegetés a cellák között stb). \n", "\n", "##### Néhány hasznos billentyűparancs: \n", " – b: Új kódcella beszúrása az aktuális cella után. \n", " – m: Az aktuális cella típusának átállítása szövegesre. \n", " – dd: Az aktuális cella törlése. \n", " – Enter: Átlépés szerkesztőmódba (az aktuális cella tartalmának szerkesztése). \n", " \n", "#### Szerkesztómódban \n", "tudjuk szerkeszteni a cellák tartalmát. \n", "\n", "\n", "##### Néhány hasznos billentyűparancs: \n", " – Ctrl+Enter: Az aktuális cella futtatása. \n", " – Esc: Visszalépés parancsmódba. \n", " \n", " \n", " A billentyűparancsokról a Help / Keyboard Shortcuts menü ad részletesebb leírást.\n", " \n", "--- \n", "\n", "\n", "### Változó névadásnál figelyni kell arra, hogy:\n", "\n", " - az értelmező nagybetű, kisbetű érzékenyen különbözteti meg őket\n", " - vannak nyelvi azonosítók, ezek fentartott szavak amelyekt ne használjunk változó elnevezéskor\n", " \n", " \n", " \n", " \n", "### Karakterkészlet / Pszeudó-komment a file elején (alapértelmezet az utf-8)\n", " \n", "\n", "` #-*- coding: ISO-8859-1 -*\n", " \n", "` #-*- coding: ISO-8859-2 -*\n", " \n", "` #-*- coding: UTF-8 -*\n", " \n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "MP1jVkMsP4yn", "colab_type": "code", "colab": {}, "outputId": "8dde141e-501b-472c-bd89-7cc01d6bef3c" }, "source": [ "## Csak konzol alkalmazásnál így töröljük le a képernyőt\n", "import os\n", "os.system('cls') # For Windows\n", "# os.system('clear') # For Linux/OS X" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0" ] }, "metadata": { "tags": [] }, "execution_count": 41 } ] }, { "cell_type": "markdown", "metadata": { "id": "--BPLYh0P4yq", "colab_type": "text" }, "source": [ "---\n", "\n", "\n", "## A Python adattípusai\n", "\n", "### Számok: \n", " Integer \n", " i=5\n", " \n", " long \n", " i=5L \n", " \n", " Float(lebegőpontos) \n", " f=5.0\n", " \n", " Komplex szám \n", " 5+4j \n", " \n", "\n", "### Logikai / boolean: \n", " b=True, \n", " b=False \n", " (nagy kezdőbetű!) True, False \n", " \n", "\n", "### Szöveg /string\n", "\n", "String \n", " szoveg='Péda szöveg'\n", "\n", "\n", "Bytes \n", " b'akarmi' → (sztring) \n", " bytes('talicska') → (sztring) \n", " \n", " \n", "Bytearray: ua. mint bytes, csak módosítható \n", " bytearray([66, 67, 68]) → bytearray(b'BCD') \n", " \n", "\n", "List (lista) \n", " l=[ 0, 15, 'beton', i ] (indexelhető, módosítható) \n", "\n", "Tuple (sokaság) \n", " t=( 0, 15, 'beton', i ) (indexelhető, nem lehet módosítani) \n", "\n", "Dictionary (asszoc. tömb) \n", " d= {'beton': 5, 'teherauto': 'KAMAZ'}\n", " \n", " Set (halmaz. készlet) \n", " s={5, 9.9, 'beton'} \n", " Halmazműveletekre (intersect, union, stb.) \n", " 1 elem csak 1x lehet tag! \n", " s.add(4) → {4, 5, 9.9, 'beton'} \n", "\n", " \n", "Frozenset \n", " mint az előbbi, csak nem módósítható\n", " \n", " \n", "---\n", "\n", " \n", "\n", "## Az adattípusok dinamikusan (deklarálás nélkül) egyből használhatóak: \n", "\n", "type(1) \n", "\n", "type(1.2) \n", "\n", "type(1.) \n", "\n", "type(\"Hello\") # string: ’ vagy ” vagy \"\"\" ill '''\n", "\n", "type(None) \n", "\n", "type(int) \n", "\n", "\n", "\n", "### Változók típusának konvertálása: \n", "\n", "Mint minden magasszintű programnyelvben itt is van castolásra lehetőségünk. A castolás\n", "gyakorlatilag a változó eredeti típusát képes megváltoztatni az általunk kiválasztott változó típusra. \n", "\n", "\n", "str(17) \n", "\n", "int(\"17\") \n", "\n", "float(\"2.5\") \n", "\n", "float(\"1\")\n", "\n", "### Változó rendszer azonosítója\n", "\n", "id(azonosito)\n", "\n", "\n", "\n", "### Megjegyzések (Comment-ek)\n", "A scriptnyelvek többségéhez hasonlóan a Python kommenteket a # karakter definiálja. A # karaktertől kezdődően az interpreter a sor végéig kommentként értelmezi a szöveget.\n", "\n", "Egy megjegyzés lehet sor elején, vagy követhet szóközt, tabulátor karaktert, de ha egy karakterlánc (string) belsejébe teszed, az nem lesz megjegyzés (lásd a példában!). A kettőskereszt karakter egy karakterláncon belül csak egy kettőskeresztet jelent.\n", "\n", "A komment csak a programozónak szól emlékeztetőül, vagy más programozók megértését segíti. Noha gyakran elmarad, a kódok rendszeres dokumentálása megjegyzésekkel később (amikor már a kód részleteit a feledés homálya borítja) nagyon kifizetődő lehet.\n", "\n", "---\n" ] }, { "cell_type": "code", "metadata": { "id": "khM6WudhP4yr", "colab_type": "code", "colab": {}, "outputId": "c7e7bf01-ada0-40b7-cbe0-7ae26c461e50" }, "source": [ "nem_megjegyzes =' # ez itt nem # megjegyzés csak egy sima kettőskereszt karakter # '\n", "print(nem_megjegyzes)\n", "\n", "\n", "# tipusok\n", "\n", "type(1) \n", "type(1.2) \n", "type(1.) \n", "type(\"Hello\") # string: ’ vagy ” \n", "type(None) \n", "type(int)\n", "\n", "\n", "\n", "# Változók típusának konvertálása\n", "\n", "# str( 17) \n", "int(\"17\") \n", "float(\"2.5\") \n", "float(\"1\")\n", "\n", "# Többszörös érték adás\n", "\n", "var1 = var2 = var3 = 1\n", "var=0\n", "print(var1,' ',var2,' ',var3)\n", "print('var1 = ', id(var1),'var2 = ', id(var2), 'var3 = ', id(var3), 'var = ', id(var))\n", "print('---------')\n", "var2 = 'lajos'\n", "print('var1 = ', id(var1),'var2 = ', id(var2), 'var3 = ', id(var3), 'var = ', id(var))\n", "print('---------')\n", "\n", "\n", "# egyszerre tőbb váltiozó érték beállítása\n", "\n", "var1, var2, var3 = 1, 2.5, \"john\"\n", "print(var1,' ',var2,' ',var3)\n", "\n", "\n", "\n", "\n", "# String műveletek\n", "\n", "str = 'Hello World!' # A string\n", "\n", "print(str) # megjelenítése teljes stringnek\n", "print(str[0]) # megjelenítése első karaktere\n", "print(str[2:5]) # megjelenítése harmadiktól az ötödikig\n", "print(str[2:]) # megjelenítése a szöveg harmadik karakterétől\n", "print(str[:2])\n", "print(str * 2) # megjelenítése kétszer a szövegnek\n", "print(str + \"TEST\") # megjelenítése összefüzéses string" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ " # ez itt nem # megjegyzés csak egy sima kettőskereszt karakter # \n", "1 1 1\n", "var1 = 140704464413072 var2 = 140704464413072 var3 = 140704464413072 var = 140704464413040\n", "---------\n", "var1 = 140704464413072 var2 = 3062343383344 var3 = 140704464413072 var = 140704464413040\n", "---------\n", "1 2.5 john\n", "Hello World!\n", "H\n", "llo\n", "llo World!\n", "He\n", "Hello World!Hello World!\n", "Hello World!TEST\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "GqlMEEd-P4yu", "colab_type": "code", "colab": {}, "outputId": "21f56349-e175-4e7c-a8b3-d7328116b8b3" }, "source": [ "i=303 \n", "print (str(i), \" - \" , 'i' )\n", "print ('i', \" - \", str(i))\n", "\n", "import unicodedata\n", "text = \"àéêöhello\"\n", "\n", "text = unicodedata.normalize('NFD', text)\n", "print ('t1', text)\n", "text = text.encode('ascii', 'ignore') # szöveg ascii-ra kódolása\n", "print ('t2', text)\n", "text = text.decode(\"utf-8\") # szöveg utf-8-ra kódolása\n", "print ('t3', text)\n", "\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "303 - i\n", "i - 303\n", "t1 àéêöhello\n", "t2 b'aeeohello'\n", "t3 aeeohello\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "858x3UclaYht", "colab": {}, "outputId": "09471927-8513-4c6f-a0ed-e84b041aaba4" }, "source": [ "# ez az első megjegyzés\n", "SPAM = 1 # ez a második megjegyzés tehetek további #### jeleket de ezeknek már nincs hatása\n", " # ... és ez a harmadik.\n", "STRING = \"# Ez nem megjegyzés, mert idézőjelekben van.\" # csak innen kezdődik amegjegyzés\n", "print(STRING)\n", "def fuggveny() :\n", " \"\"\" ez így megjegyzésként hat \n", " és ez több sorban is folytatódhat, \n", " de mindig csak a függvény elején álhat\"\"\"\n", " pass" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "# Ez nem megjegyzés, mert idézőjelekben van.\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "4aqgMVTBaYhw" }, "source": [ "\n", "---\n", "\n", "\n", "\n", "## A Python használata számológépként\n", "\n", "\n", "\n", "A notebookot lehet úgy használni, mint egy sima számológépet (interaktív mod): be lehet írni egy kifejezést, és az kiszámolja az értékét. \n", "\n", "A kifejezések nyelvtana a szokásos: a +, -, * és / műveletek ugyanúgy működnek, mint a legtöbb nyelvben (például Fortran vagy C). \n", "\n", "A zárójeleket értelemszerűen az elvégzendő műveletek csoportosítására, a műveleti sorrend meghatározására használjuk.\n", "\n", "\n", "\n", "\n", "### Szintaktikai lehetőségek\n", "\n", "egy sor egy utasítás,\n", "vagy egysorba több utasítás, pontosveszzővel elválasztva\n", "vagy több sorba de arészeket \\ karakterrel 'ragasszuk össze'\n", "\n", "---\n" ] }, { "cell_type": "code", "metadata": { "id": "rZvp4nSlP4y1", "colab_type": "code", "colab": {}, "outputId": "75f1fad7-8a7d-4662-d959-5b5d17d4e868" }, "source": [ "i=5 \n", "print(i) \n", "i=i + 1 \n", "print(i)\n", "print('-----------Elválasztás-----------')\n", "i=5 ; print(i) ; i=i + 1 ;print(i)\n", "print('-----------Elválasztás-----------')\n", "i = \\\n", "5\n", "print \\\n", "(i)\n", "i= \\\n", "i \\\n", "+1\n", "print(i)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "5\n", "6\n", "-----------Elválasztás-----------\n", "5\n", "6\n", "-----------Elválasztás-----------\n", "5\n", "6\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "WMcfL2DpP4y4", "colab_type": "text" }, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": { "id": "710cM3nxP4y5", "colab_type": "text" }, "source": [ "### Program tagolás (strukturálás) behuzással (Indentation) történik" ] }, { "cell_type": "code", "metadata": { "id": "N7PqQsSsP4y6", "colab_type": "code", "colab": {}, "outputId": "ea07164b-aa25-4588-ecce-4a05732d7c54" }, "source": [ "# from __future__ import braces\n", "\n", "i=5\n", "if i < 10:\n", " print(i)\n", " i = i + 1 # növel 1-el\n", " i += 4 # növel 4-el\n", " i *= 2 # megkétszerez\n", "print(i)\n", "\n", "if True:\n", " print('Ez egy mindíg igaz állítás')\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "5\n", "20\n", "Ez egy mindíg igaz állítás\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "nB_G6Ia6P4y-", "colab_type": "text" }, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": { "id": "cBLPmuuTP4y_", "colab_type": "text" }, "source": [ "### Program műveletek\n", "\n", "\n", "\n", "\n", "##### A legfontosabb általunk használt operátorok:\n", "(Megnevezés szintaktika megjegyzés)\n", "\n", "Összeadás + Két nem karakter típusú változó összeadása\n", "\n", "Konketenáció + Két sztring összefűzése \n", "\n", "Szorzás * Két nem karakter típusú változó összeszorzása\n", "\n", "Exponenciális ** Az első operandus az alap, a második a kitevő.\n", "\n", "Értékadás = Egy tetszőleges változónak inicializálása\n", "\n", "Egyenlőség reláció == Egyenlőség feltétel megadása, IF elágazás esetén használhatjuk, figyelve, hogy a két operandus azonos típusú\n", "legyen\n", "\n", "Tagadás reláció != Tagadás feltétel megadása, IF elágazás esetén használhatjuk, figyelve, hogy a két operandus azonos típusú legyen\n", "\n", "Tagadás reláció <> Tagadás feltétel megadása, IF elágazás esetén használhatjuk, figyelve, hogy a két operandus azonos típusú legyen\n", "\n", "Kisebb reláció < Kisebb feltétel megadása, IF elágazás esetén használhatjuk, figyelve, hogy a két operandus azonos típusú legyen\n", "\n", "Nagyobb reláció > Nagyobb feltétel megadása, IF elágazás esetén használhatjuk, figyelve, hogy a két operandus azonos típusú legyen\n", "\n", "Kisebb egyenlő <= Feltétel megadása, IF elágazás esetén használhatjuk, figyelve, hogy a két operandus azonos típusú legyen\n", "\n", "Nagyobb egyenlő >= Feltétel megadása, IF elágazás esetén használhatjuk, figyelve, hogy a két operandus azonos típusú legyen\n", "\n", "Logikai És and Két operandus közti és kapcsolatot teremti meg\n", "\n", "Logikai Vagy or Két operandus közti vagy kapcsolatot teremti meg\n", "\n", "Bitenkénti És & Két változó bitjei közötti és művelet\n", "\n", "Bitenkénti Vagy | Két változó bitjei közötti vagy művelet\n", "\n", "Bitenkénti kizáró vagy ^ Két változó bitjei közötti XOR művelet\n", "\n", "Bitenkénti Negáció ~\n", "\n", "Bináris balra shiftelés <<\n", "\n", "Bináris jobbra shiftelés >>\n", "\n", "\n", "in, not in : A két operátorral megkérdezhetjük, hogy egy objektumot egy másik tartalmaz-e. Ezek a konténertípusú objektumok esetén rendkívül hasznosak. Az eredmény bool típusú lesz.\n", "\n", " \n", "is, is not : Ezen operátorokkal az objektumok azonosságát tesztelhetjük. Az eredmény bool típusú lesz.\n", "\n", " \n", "\n", "not, or, and : A Boole-algebra operátorai is jól használhatók állítások megfogalmazására. A programozásban a kétértékű Boole-algebra használatos, amelyben csak két érték van, a hamis és az igaz, és ezek egymás ellentettjei.\n", "\n", "\n", "Nagyon fontos jellemzője a logikai kifejezések használatának, hogy az értelmező az utoljára kiszámított részkifejezés értékét adja eredményként, ami nem feltétlen bool típusú.\n", "\n", "|ESET1|ESET2|ESET3|ESET4|\n", "|---|---|---|---|\n", "|T = T and T | F = F and F | F = F and T | F = T and F |\n", "|T = T or T | F = F or F | T = F or T | T = T or F |\n", "\n", "\n", "\n", "---" ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "H3WPOrVMaYhx", "outputId": "5b4f11b5-6245-4437-ee55-d4892b9b2ef5", "scrolled": true, "colab": {} }, "source": [ "2 + 2" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "4" ] }, "metadata": { "tags": [] }, "execution_count": 5 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "A9K9-neuaYh0", "outputId": "a0b244db-46dd-4096-91b1-bc7bbaa7ffa2", "colab": {} }, "source": [ "50 - 5*6" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "20" ] }, "metadata": { "tags": [] }, "execution_count": 3 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "Pu3zIOFEaYh2", "outputId": "8c88cd52-8972-4c94-8eae-a355bb6306e0", "colab": {} }, "source": [ "(50 - 5*6) / 4" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "5.0" ] }, "metadata": { "tags": [] }, "execution_count": 4 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "zTn2W5sYaYh4", "outputId": "b9bd2bcd-c1b0-4536-eb5b-50c2ebfe05c8", "colab": {} }, "source": [ "8 / 5 # az osztás egész számok esetén is lebegőpontos eredményt ad. " ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "1.6" ] }, "metadata": { "tags": [] }, "execution_count": 5 } ] }, { "cell_type": "markdown", "metadata": { "id": "fd-AXnB2P4zK", "colab_type": "text" }, "source": [ "---\n", "\n", "### feltételes értákadás \n", "\n", "`obj = kif1 if tesztkif else kif2` \n", "\n", " Az értelmező először a tesztkif kifejezést értékeli ki, és ha az igaz, akkor a kif1 kiértékelésének az eredményét írja be az obj nevű változóba, ha hamis akkor a kif2 eredményét.\n", " \n", "---" ] }, { "cell_type": "code", "metadata": { "id": "m5TFI45pP4zM", "colab_type": "code", "colab": {}, "outputId": "87a78ab7-f8f6-4e39-8839-500dc0b8e69b" }, "source": [ "miez = 2 or 4 ## Ha az első tag nem null akkor annak értékét veszi fel\n", "print('2 or 4 -> ',miez) \n", "\n", "miez = 0 and 5 ## Ha az első tag null akkor annak értékét veszi fel (null lesz)\n", "print('3 and 5 -> ',miez)\n", "\n", "miez= \"Van\" if miez else \"Nincs\" ## feltételes értékadás (az előzők is erre jók)\n", "print('if else -> ',miez)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "2 or 4 -> 2\n", "3 and 5 -> 0\n", "if else -> Nincs\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "F2z5K3bKP4zP", "colab_type": "code", "colab": {}, "outputId": "0177a799-d9bc-4146-a98f-52f5b57976f3" }, "source": [ "a = 'Lajos'\n", "print('L betű van az a változóban :','L' in a)\n", "print('X betű van az a változóban :','X' in a)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "L betű van az a változóban : True\n", "X betű van az a változóban : False\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "lqruWh4gaYh7" }, "source": [ "\n", "---\n", "\n", "az egész számok (pl. 2, 4, 20) alkotják az **int** típust, \n", "\n", "a valós számok (pl 5.0, 1.6) pedig a **float** típust. \n", "\n", "\n", "---\n", "\n", "\n", "`Pythonban` 3-ban az osztás (/) mindig lebegőpontos értékeket ad vissza. \n", "\n", "lefelé kerekítő egészosztás elvégzéséhez, amellyel egész értéket kapunk, a // operátor használható; \n", "\n", "az osztás maradékához a %-t használhatjuk\n", "\n", "---\n" ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "3ViM_h6saYh7", "outputId": "4180c75a-44a8-4d5d-fbe3-65e15086eb01", "colab": {} }, "source": [ "17 / 3 # hagyományos osztás lebegőpontos eredménnyel" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "5.666666666666667" ] }, "metadata": { "tags": [] }, "execution_count": 6 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "oMeMYUgAaYh9", "outputId": "e645fb58-298c-4abc-daf7-c93fe88d9e45", "colab": {} }, "source": [ "17 // 3 # az egészosztással megszabadulunk a törtrésztől" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "5" ] }, "metadata": { "tags": [] }, "execution_count": 7 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "XijW9RAVaYh_", "outputId": "0a0810ff-d21b-4311-e133-df70fa38b1b7", "colab": {} }, "source": [ "17 % 3 # a % operátor az osztás maradékával tér vissza" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "2" ] }, "metadata": { "tags": [] }, "execution_count": 8 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "fe_JO4HgaYiB", "outputId": "8c88b95e-0dc8-4491-c06f-a52308d4c4be", "colab": {} }, "source": [ "5 * 3 + 2 # eredmény * osztó + maradék" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "17" ] }, "metadata": { "tags": [] }, "execution_count": 9 } ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "iD1gNulDaYiD" }, "source": [ "---\n", "\n", "A `Pythonban` a ** operátor használható a hatvány kiszámítására:\n", "\n", "---\n" ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "hqVnBl2vaYiD", "outputId": "45e9fbd4-f5c0-49fb-9c8b-3187f7cba0cc", "colab": {} }, "source": [ "5 ** 2 # 5 négyzete" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "25" ] }, "metadata": { "tags": [] }, "execution_count": 10 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "w_FnyJfMaYiF", "outputId": "5d97bcfd-3036-4ff0-acfc-1c05277b365c", "colab": {} }, "source": [ "2 ** 7 # 2 7-dik hatványa" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "128" ] }, "metadata": { "tags": [] }, "execution_count": 11 } ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "odGB1Vy4aYiH" }, "source": [ "\n", "---\n", "\n", "A `Python` a lebegőpontos számokat bizonyos tekintetben előnyben részesíti az egész számokhoz képest. Azok a műveletek, amelyeknél keverednek a típusok, az egészeket lebegőpontossá alakítják:\n", "\n", "---\n", "\n" ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "EqOqIsNsaYiI", "outputId": "3fcca6d3-bd75-4165-8099-78b495af873b", "colab": {} }, "source": [ "3 * 3.75 / 1.5" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "7.5" ] }, "metadata": { "tags": [] }, "execution_count": 12 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "BY8PxlASaYiK", "outputId": "7044c3c8-78ae-4d52-f07a-b606c6e7b1c3", "colab": {} }, "source": [ "7.0 / 2" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "3.5" ] }, "metadata": { "tags": [] }, "execution_count": 13 } ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "o5KeAvubaYiM" }, "source": [ "\n", "---\n", "\n", "Előfordul néha, hogy egyes függvények `int` típusú változót, várnak és ezt egy `float` típusúból kell előállítanunk. A típusok közti konverziót az int() és float() függvények segítségével tehetjük meg.\n", "\n", "---\n" ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "wvXTesTMaYiN", "outputId": "65ddb2f7-9e44-4f07-ce47-ebd9957f2649", "colab": {} }, "source": [ "int(3.1415)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "3" ] }, "metadata": { "tags": [] }, "execution_count": 14 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "fTMOpUA5aYiO", "outputId": "b0493dd6-bccd-4633-85d0-a490f77111fb", "colab": {} }, "source": [ "float(42)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "42.0" ] }, "metadata": { "tags": [] }, "execution_count": 15 } ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "iaktkHVjaYiQ" }, "source": [ "\n", "---\n", "\n", "A `Python` komplex számokat is tud kezelni – a képzetes részt a j vagy J jellel képezhetjük. A komplex számot (valós+képzetes j) formában írhatjuk:\n", "\n", "---\n" ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "u3bYopdvaYiR", "outputId": "580a608d-df7e-4873-ccba-2db5c35f5cf9", "colab": {} }, "source": [ "1j * 1J" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(-1+0j)" ] }, "metadata": { "tags": [] }, "execution_count": 16 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "J0LpfMA2aYiT", "outputId": "3b2e5c7a-0803-42e3-dfcb-8b28cf4261bc", "colab": {} }, "source": [ "3+1j*3" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(3+3j)" ] }, "metadata": { "tags": [] }, "execution_count": 17 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "bCPJ-xifaYiU", "outputId": "ba32e69c-e04b-4376-ccc2-73fa18b73683", "colab": {} }, "source": [ "(3+1j)*3" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(9+3j)" ] }, "metadata": { "tags": [] }, "execution_count": 18 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "VPN5-R_EaYiZ", "outputId": "3ab126a3-33c9-4c77-a53a-f802916fc7d7", "colab": {} }, "source": [ "(1+2j)/(1+1j)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(1.5+0.5j)" ] }, "metadata": { "tags": [] }, "execution_count": 19 } ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "FxnXZvAZaYid" }, "source": [ "A komplex számokat gyakran két lebegőpontos számmal ábrázolják: a képzetes és a valós résszel. A `z` komplex számnak ezeket a részeit talán kicsit szokatlan módon (a változó után írt `.` és a megfelelő szó ) a `z.real` és `z.imag` utasításokkal olvashatjuk vissza." ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "NK1plMBbaYie", "outputId": "60048aff-3d2d-49e9-ac21-61a36caffe95", "colab": {} }, "source": [ "(1.5+0.5j).real" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "1.5" ] }, "metadata": { "tags": [] }, "execution_count": 20 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "RaOmun4eaYif", "outputId": "7cc6aa9b-dd92-4cbb-89c1-c54333a11d85", "colab": {} }, "source": [ "(1.5+0.5j).imag" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.5" ] }, "metadata": { "tags": [] }, "execution_count": 21 } ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Pq3kbLejaYih" }, "source": [ "\n", "---\n", "\n", "A lebegőpontos és egész típusú konverziós függvények (`float()` és `int()`) nem működnek komplex számokra.\n", "\n", "A komplex-valós átalakításnak több lehetséges módja is van: ahhoz, \n", "hogy egy komplex számból valósat csinálj, használd az abs(z) utasítást, \n", "hogy megkapd a nagyságát, vagy a fennt már megismert `z.real` és `z.imag` utasítást, \n", "ha a valós része vagy a képzetes része kell. \n", "\n", "---\n" ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "Z1yasd4laYii", "outputId": "1c081bf2-b4dd-4cb3-9314-9ec91fc4182e", "colab": {} }, "source": [ "float(3.0+4.0j) # ez nem működik // can't convert complex to float" ], "execution_count": 0, "outputs": [ { "output_type": "error", "ename": "TypeError", "evalue": "can't convert complex to float", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m