577 lines
17 KiB
Plaintext
577 lines
17 KiB
Plaintext
{
|
||
"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": 2,
|
||
"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": 3,
|
||
"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: min = diff; eri = i; 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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>company</th>\n",
|
||
" <th>numEmps</th>\n",
|
||
" <th>category</th>\n",
|
||
" <th>city</th>\n",
|
||
" <th>state</th>\n",
|
||
" <th>fundedDate</th>\n",
|
||
" <th>raisedAmt</th>\n",
|
||
" <th>raisedCurrency</th>\n",
|
||
" <th>round</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>LifeLock</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>web</td>\n",
|
||
" <td>Tempe</td>\n",
|
||
" <td>AZ</td>\n",
|
||
" <td>1-May-07</td>\n",
|
||
" <td>6850000</td>\n",
|
||
" <td>USD</td>\n",
|
||
" <td>b</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>LifeLock</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>web</td>\n",
|
||
" <td>Tempe</td>\n",
|
||
" <td>AZ</td>\n",
|
||
" <td>1-Oct-06</td>\n",
|
||
" <td>6000000</td>\n",
|
||
" <td>USD</td>\n",
|
||
" <td>a</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>LifeLock</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>web</td>\n",
|
||
" <td>Tempe</td>\n",
|
||
" <td>AZ</td>\n",
|
||
" <td>1-Jan-08</td>\n",
|
||
" <td>25000000</td>\n",
|
||
" <td>USD</td>\n",
|
||
" <td>c</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>MyCityFaces</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>web</td>\n",
|
||
" <td>Scottsdale</td>\n",
|
||
" <td>AZ</td>\n",
|
||
" <td>1-Jan-08</td>\n",
|
||
" <td>50000</td>\n",
|
||
" <td>USD</td>\n",
|
||
" <td>seed</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Flypaper</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>web</td>\n",
|
||
" <td>Phoenix</td>\n",
|
||
" <td>AZ</td>\n",
|
||
" <td>1-Feb-08</td>\n",
|
||
" <td>3000000</td>\n",
|
||
" <td>USD</td>\n",
|
||
" <td>a</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1429</th>\n",
|
||
" <td>Trusera</td>\n",
|
||
" <td>15.0</td>\n",
|
||
" <td>web</td>\n",
|
||
" <td>Seattle</td>\n",
|
||
" <td>WA</td>\n",
|
||
" <td>1-Jun-07</td>\n",
|
||
" <td>2000000</td>\n",
|
||
" <td>USD</td>\n",
|
||
" <td>angel</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1430</th>\n",
|
||
" <td>Alerts.com</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>web</td>\n",
|
||
" <td>Bellevue</td>\n",
|
||
" <td>WA</td>\n",
|
||
" <td>8-Jul-08</td>\n",
|
||
" <td>1200000</td>\n",
|
||
" <td>USD</td>\n",
|
||
" <td>a</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1431</th>\n",
|
||
" <td>Myrio</td>\n",
|
||
" <td>75.0</td>\n",
|
||
" <td>software</td>\n",
|
||
" <td>Bothell</td>\n",
|
||
" <td>WA</td>\n",
|
||
" <td>1-Jan-01</td>\n",
|
||
" <td>20500000</td>\n",
|
||
" <td>USD</td>\n",
|
||
" <td>unattributed</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1432</th>\n",
|
||
" <td>Grid Networks</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>web</td>\n",
|
||
" <td>Seattle</td>\n",
|
||
" <td>WA</td>\n",
|
||
" <td>30-Oct-07</td>\n",
|
||
" <td>9500000</td>\n",
|
||
" <td>USD</td>\n",
|
||
" <td>a</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1433</th>\n",
|
||
" <td>Grid Networks</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>web</td>\n",
|
||
" <td>Seattle</td>\n",
|
||
" <td>WA</td>\n",
|
||
" <td>20-May-08</td>\n",
|
||
" <td>10500000</td>\n",
|
||
" <td>USD</td>\n",
|
||
" <td>b</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>1434 rows × 9 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"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": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>company</th>\n",
|
||
" <th>0</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>212</th>\n",
|
||
" <td>Facebook</td>\n",
|
||
" <td>7</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"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.11.3"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 1
|
||
}
|