{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Python gyakorlat 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.1 Készíts programot, amely a felhasználótól 4 nemnegatív számot vár és visszaadja ezek harmonikus közepét! Hibakezelés segítségével tedd biztossá, hogy program addig kérjen új inputot, amíg minden feltétel nem teljesül és kezeld a lehetséges hibákat!" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.2 A következő program több hibára érzékeny. Kezeld az esetlegesen fellépő hibákat és biztosítsd, hogy a használt file a program végén nem marad megnyitva!" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "f = open(\"osszeadas.txt\", 'w')\n", "for i in range(3):\n", " x = int(input(\"enter a number: \"))\n", " y = int(input(\"enter another number: \"))\n", "\n", " f.write(\"{} + {} = {}\\n\".format(x, y, x+y))\n", " \n", "f.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.3 Írj programot, ami bekéri a felhasználó nevét, azonban ha a kapott név Nemecsek Ernő és szerepel benne nagybetű, akkor a program CowardError-ral leáll! " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.1 Olvasd be ezt a fájlt amin jelenleg is dolgozol, és íratsd ki a tartalmát." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.2 Írj egy függvényt, ami összefűz 2 (*k) fájlt, azaz beolvassa a fileok tartalmát, összefűzi őket, és kiírja azt egy új fáljba." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.3 Készíts egy myprint osztályt, amivel a printhez hasonló módon ki lehet íratni a konzolra, de bármit amit kiír azt egyúttal logolja is egy fileba (osztályparaméter a logfile neve).\n", "## **Oldd meg, hogy a python eredeti print függvénye így viselkedjen (azaz ne csak kiírjon, hanem logoljon is). " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "class myprintclass():\n", " # ToDo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.1 Értelmezd a következő függvényeket és valósítsd meg őket map(), filter() és reduce() segítségével egy sorban! " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def elso(l):\n", " ret = 1\n", " for i in l:\n", " ret *= i\n", " \n", " return ret ** (1/len(l))\n", "\n", "\n", "def masodik(l):\n", " ret = []\n", " for i in l:\n", " l_ind = i % len(l)\n", " ret.append(l[l_ind])\n", " \n", " return ret\n", "\n", " \n", "def harmadik(l):\n", " ret = []\n", " for i in l:\n", " indicator = True\n", " for s in str(i):\n", " if int(s) > 4:\n", " indicator = False\n", " if indicator:\n", " ret.append(i)\n", " \n", " return ret\n", "\n", "\n", "\n", "l = [1,2,4,8,12]\n", "\n", "\n", "meg_elso = None\n", "\n", "meg_masodik = None\n", "\n", "meg_harmadik = None\n", "\n", "assert meg_elso == elso(l)\n", "assert meg_masodik == masodik(l)\n", "assert meg_harmadik == harmadik(l)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.2 Írj függvényt, amely megszámolja az 1, 2, ..., n számok azon permutációinak számák, amelyek inverziója pontosan k! \n", "(Tipp: nézz utána, mit tudnak/hogyan működnek az intertools package combinations() és permutations() függvényei..)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from itertools import combinations, permutations\n", "\n", "def number_of_permutations_with_inversion(n, k):\n", " # ToDo\n", "\n", "\n", "assert number_of_permutations_with_inversion(3,2) == 2\n", "assert number_of_permutations_with_inversion(7, 20) == 6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.3 Írj generátorfüggvényt, ami generálja a Fibonacci számokat! Ennek segítségével írj függvényt, ami megszámolja a legfeljebb n jegyű páros Fibonacci számokat!" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def fibonacci_generator():\n", " # ToDo\n", "\n", "def paros_fibonacci_szamlalo(n):\n", " # ToDo\n", "\n", "assert paros_fibonacci_szamlalo(10) == 16\n", "assert paros_fibonacci_szamlalo(50) == 80\n", "assert paros_fibonacci_szamlalo(100) == 160\n", " \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4.1 mentsd el a 2.3. feladatban definiált osztályt egy myprint.py nevű fileba, és importáld belőle a myprint objektumot. A kernelt indítsd újra a biztonság kedvéért mielőtt tesztelsz." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#ide az import\n", "from myprint import myprint\n", "myprint(\"Moss\", \"kezet\", \"szappannal\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }