{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Vizsgaminta 1." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. feladat [6p]\n", "\n", "Készítsünk programot, amely bekér a felhasználótól két sztringet, majd kiírja a bennük található leghosszabb közös részsztringet! Példa futási eredmény:\n", "```\n", "1. sztring: András\n", "2. sztring: Bandi\n", "A leghosszabb közös rész: nd\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A leghosszabb közös rész: nd\n" ] } ], "source": [ "# Két sztring leghosszabb közös része\n", "def kozos_resz(a, b):\n", " ''' Két sztring leghosszabb közös része'''\n", " er = ''\n", " for i in range(len(a)):\n", " s = a[i:]\n", " for j in range(len(s)):\n", " ss = s[:j+1]\n", " if ss in b:\n", " if len(ss) > len(er): \n", " er = ss\n", " return er\n", "\n", "# Teszt\n", "er = kozos_resz('András', 'Bandi')\n", "if er == '':\n", " print('Nincs közös rész!')\n", "else: \n", " print('A leghosszabb közös rész:',er)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. feladat [6p]\n", "\n", "A `birthdays` lista kitalált személyek nevét és születési dátumát tartalmazza. Készítsünk programot, amely megkeresi, hogy kik állnak életkorban egymáshoz a legközelebb, és hány nap köztük a különbség! A program ne csak a megadott `birthdays` listára működjön, hanem tetszőleges, ugyanilyen formátumú bemenetre is! Feltehetjük, hogy minden név különböző, és legalább két név meg van adva." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "birthdays = [\n", " ('Kovács Andor', '1999-10-29'),\n", " ('Kiss Martina', '2000-02-13'),\n", " ('Horváth Barna', '1999-12-05'),\n", " ('Győri Eszter', '2000-10-29'),\n", " ('Nagy Tivadar', '1999-08-16'),\n", " ('Tóth Tamara', '2000-01-30'),\n", " ('Szakács Sándor', '1999-09-02')\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Elvárt futási eredmény:\n", "```\n", "Életkorban legközelebb állók: Kiss Martina, Tóth Tamara\n", "14 nap köztük a különbség\n", "```" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Életkorban legközelebb állók: Kiss Martina, Tóth Tamara\n", "14 nap köztük a különbség\n" ] } ], "source": [ "from datetime import date\n", "\n", "# Ez a függvény a 3.7-es Python már szerepel\n", "def fromisoformat(s):\n", " y = int(s[:4])\n", " m = int(s[5:7])\n", " d = int(s[8:])\n", " return date(y, m, d)\n", "\n", "min = -1\n", "for i in birthdays:\n", " di = fromisoformat(i[1])\n", " for j in birthdays:\n", " dj = fromisoformat(j[1])\n", " if i != j:\n", " diff = abs(di-dj)\n", " if min == -1:\n", " min = diff; eri = i; erj = j \n", " else:\n", " if diff < min: \n", " min = diff\n", " eri = i\n", " erj = j\n", "print(f'Életkorban legközelebb állók: {eri[0]}, {erj[0]}')\n", "print(f'{min.days} nap köztük a különbség')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. feladat [8p]\n", "\n", "Az [investments.txt](investments.txt) szövegfájl amerikai cégekbe történő befektetésekről tartalmaz adatokat (a TechCrunch hírportál alapján). Készítsünk programot, amely kiszámítja és kiírja az alábbi statisztikákat:\n", "- Hány befektetés történt összesen?\n", "- Melyik cég(ek)be fektették be a legtöbbször és hányszor?\n", "- Cégkategóriánként hány dollárt fektettek be összesen?" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A cégekbe összesen 1434 db befektetés történt\n", "\n", "A legtöbb (7 db) befektetést kapó cég(ek): ['Facebook']\n", "\n", "Cégkategóriánként a befektetett összes pénz:\n", "1. web 11753474750\n", "2. software 1017942000\n", "3. hardware 824500000\n", "4. mobile 323020000\n", "5. other 119850000\n", "6. biotech 77250000\n", "7. cleantech 258900000\n", "8. consulting 32135000\n" ] } ], "source": [ "# Megoldás 1. (hagyományos eszközökkel)\n", "f = open('investments.txt')\n", "# A fejlécsor átugrása\n", "f.readline()\n", "# A többi sor beolvasása\n", "lines = f.readlines()\n", "f.close()\n", "\n", "# Az összes befektetés darabszáma\n", "print(f'A cégekbe összesen {len(lines)} db befektetés történt\\n') \n", "\n", "# A cég, akibe a legtöbbször fektettek be\n", "d = {}\n", "for l in lines:\n", " t = l.strip().split('|')\n", " if t[0] in d:\n", " d[t[0]] += 1\n", " else:\n", " d[t[0]] = 1\n", "# Az egy cégbe történt legtöbb befektetés \n", "maxdb = max(d.values())\n", "# Azok a cégek, akiknél a maximális befektetés történt\n", "l = [c for c in d if d[c] == maxdb]\n", "print(f'A legtöbb ({maxdb} db) befektetést kapó cég(ek): {l}\\n') \n", "\n", "# Cégkategóriánként a befektetett összes pénz\n", "d = {}\n", "for l in lines:\n", " t = l.strip().split('|')\n", " if t[2] in d:\n", " d[t[2]] += int(t[6])\n", " else:\n", " d[t[2]] = int(t[6])\n", "# Listává alakítjuk a szótár adatait (a könnyebb listázás végett)\n", "l = list(d.items())\n", "print('Cégkategóriánként a befektetett összes pénz:')\n", "# A sorokat ellátjuk sorszámmal és az oszlopokat igazítjuk\n", "for i, (x, y) in enumerate(l):\n", " print(f'{i + 1}. {x:15} {y:15}')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
companynumEmpscategorycitystatefundedDateraisedAmtraisedCurrencyround
0LifeLockNaNwebTempeAZ1-May-076850000USDb
1LifeLockNaNwebTempeAZ1-Oct-066000000USDa
2LifeLockNaNwebTempeAZ1-Jan-0825000000USDc
3MyCityFaces7.0webScottsdaleAZ1-Jan-0850000USDseed
4FlypaperNaNwebPhoenixAZ1-Feb-083000000USDa
..............................
1429Trusera15.0webSeattleWA1-Jun-072000000USDangel
1430Alerts.comNaNwebBellevueWA8-Jul-081200000USDa
1431Myrio75.0softwareBothellWA1-Jan-0120500000USDunattributed
1432Grid NetworksNaNwebSeattleWA30-Oct-079500000USDa
1433Grid NetworksNaNwebSeattleWA20-May-0810500000USDb
\n", "

1434 rows × 9 columns

\n", "
" ], "text/plain": [ " company numEmps category city state fundedDate \\\n", "0 LifeLock NaN web Tempe AZ 1-May-07 \n", "1 LifeLock NaN web Tempe AZ 1-Oct-06 \n", "2 LifeLock NaN web Tempe AZ 1-Jan-08 \n", "3 MyCityFaces 7.0 web Scottsdale AZ 1-Jan-08 \n", "4 Flypaper NaN web Phoenix AZ 1-Feb-08 \n", "... ... ... ... ... ... ... \n", "1429 Trusera 15.0 web Seattle WA 1-Jun-07 \n", "1430 Alerts.com NaN web Bellevue WA 8-Jul-08 \n", "1431 Myrio 75.0 software Bothell WA 1-Jan-01 \n", "1432 Grid Networks NaN web Seattle WA 30-Oct-07 \n", "1433 Grid Networks NaN web Seattle WA 20-May-08 \n", "\n", " raisedAmt raisedCurrency round \n", "0 6850000 USD b \n", "1 6000000 USD a \n", "2 25000000 USD c \n", "3 50000 USD seed \n", "4 3000000 USD a \n", "... ... ... ... \n", "1429 2000000 USD angel \n", "1430 1200000 USD a \n", "1431 20500000 USD unattributed \n", "1432 9500000 USD a \n", "1433 10500000 USD b \n", "\n", "[1434 rows x 9 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Megoldás 2. (pandas segítségével)\n", "import pandas as pd\n", "\n", "# Beolvasás DataFrame-be\n", "df = pd.read_csv('investments.txt', sep='|')\n", "df" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A cégekbe összesen 1434 db befektetés történt.\n" ] } ], "source": [ "# Az összes befektetés darabszáma\n", "print(f'A cégekbe összesen {len(df)} db befektetés történt.') " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A cég, amelyikbe a legtöbb (7) befektetés történt: Facebook\n", "\n", "A cégek, amelyekbe a legtöbb (7) befektetés történt:\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
company0
212Facebook7
\n", "
" ], "text/plain": [ " company 0\n", "212 Facebook 7" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Melyik cégbe történt a legtöbb befektetés és mennyi?\n", "\n", "# Ha csak egy ilyen van\n", "db = df.groupby('company').size()\n", "print(f'A cég, amelyikbe a legtöbb ({db.max()}) befektetés történt: {db.idxmax()}')\n", "print()\n", "\n", "# Ha több ilyen is lehet\n", "db_max = db.max()\n", "df1 = db.reset_index()\n", "print(f'A cégek, amelyekbe a legtöbb ({db_max}) befektetés történt:')\n", "df1[df1[0] == db_max]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Cégkategóriánként a befektetett összes pénz:\n", "category\n", "biotech 77250000\n", "cleantech 258900000\n", "consulting 32135000\n", "hardware 824500000\n", "mobile 323020000\n", "other 119850000\n", "software 1017942000\n", "web 11753474750\n", "Name: raisedAmt, dtype: int64\n" ] } ], "source": [ "# Cégkategóriánként a befektetett összes pénz\n", "print('Cégkategóriánként a befektetett összes pénz:')\n", "print(df.groupby('category')['raisedAmt'].sum())" ] } ], "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.12.6" } }, "nbformat": 4, "nbformat_minor": 1 }