{ "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", " | company | \n", "numEmps | \n", "category | \n", "city | \n", "state | \n", "fundedDate | \n", "raisedAmt | \n", "raisedCurrency | \n", "round | \n", "
---|---|---|---|---|---|---|---|---|---|
0 | \n", "LifeLock | \n", "NaN | \n", "web | \n", "Tempe | \n", "AZ | \n", "1-May-07 | \n", "6850000 | \n", "USD | \n", "b | \n", "
1 | \n", "LifeLock | \n", "NaN | \n", "web | \n", "Tempe | \n", "AZ | \n", "1-Oct-06 | \n", "6000000 | \n", "USD | \n", "a | \n", "
2 | \n", "LifeLock | \n", "NaN | \n", "web | \n", "Tempe | \n", "AZ | \n", "1-Jan-08 | \n", "25000000 | \n", "USD | \n", "c | \n", "
3 | \n", "MyCityFaces | \n", "7.0 | \n", "web | \n", "Scottsdale | \n", "AZ | \n", "1-Jan-08 | \n", "50000 | \n", "USD | \n", "seed | \n", "
4 | \n", "Flypaper | \n", "NaN | \n", "web | \n", "Phoenix | \n", "AZ | \n", "1-Feb-08 | \n", "3000000 | \n", "USD | \n", "a | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
1429 | \n", "Trusera | \n", "15.0 | \n", "web | \n", "Seattle | \n", "WA | \n", "1-Jun-07 | \n", "2000000 | \n", "USD | \n", "angel | \n", "
1430 | \n", "Alerts.com | \n", "NaN | \n", "web | \n", "Bellevue | \n", "WA | \n", "8-Jul-08 | \n", "1200000 | \n", "USD | \n", "a | \n", "
1431 | \n", "Myrio | \n", "75.0 | \n", "software | \n", "Bothell | \n", "WA | \n", "1-Jan-01 | \n", "20500000 | \n", "USD | \n", "unattributed | \n", "
1432 | \n", "Grid Networks | \n", "NaN | \n", "web | \n", "Seattle | \n", "WA | \n", "30-Oct-07 | \n", "9500000 | \n", "USD | \n", "a | \n", "
1433 | \n", "Grid Networks | \n", "NaN | \n", "web | \n", "Seattle | \n", "WA | \n", "20-May-08 | \n", "10500000 | \n", "USD | \n", "b | \n", "
1434 rows × 9 columns
\n", "\n", " | company | \n", "0 | \n", "
---|---|---|
212 | \n", "7 | \n", "