Files
PythonProgramozas_GKNB_MSTM…/SajatMegoldasok/vizsga_03_minta.ipynb
2024-12-09 19:41:42 +01:00

284 lines
11 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Vizsgaminta 3."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1. feladat [4p]\n",
"Készítsünk programot, amely pozitív egész számok egy nemüres listájára meghatározza és kiírja a lista azon elemét, amelyikben a számjegyek összege a legnagyobb! Ha több ilyen szám is lenne, akkor az elsőnek megtalált legyen az eredmény! Teszteljük a programot a `[245, 1132, 98, 465, 14231, 7854, 2542]` listával! "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7854\n"
]
}
],
"source": [
"\n",
"numblist = [245, 1132, 98, 465, 14231, 7854, 2542]\n",
"sum = 0; indx = 0\n",
"for i in numblist:\n",
" alt = str(i)\n",
" tempsum = 0\n",
" for ii in alt:\n",
" tempsum += int(ii)\n",
" if sum < tempsum:\n",
" sum = tempsum\n",
" indx = i\n",
"print(indx)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2. feladat [6p]\n",
"Az `edges` lista kitalált személyekből képezett párokat tartalmaz. Egy pár azt jelenti, hogy az adott személyek ismeri egymást. Készítsünk függvényt, amely egy adott, ilyen felépítésű listára meghatározza azt a 2 személyt, akiknek a legtöbb közös ismerősük van! Ha több ilyen személypár is lenne, akkor az egyik ilyen pár legyen az eredmény! Hívjuk meg a függvényt az `edges` listára és írjuk ki a kapott eredményeket!"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A legtöbb közös ismerősük ('Géza', 'Dezső') személyeknek van, szám szerint 3.\n"
]
}
],
"source": [
"edges = [\n",
" (\"Adél\", \"Dezső\"), (\"Géza\", \"Mihály\"), (\"Károly\", \"Adél\"), (\"Antal\", \"Mihály\"), (\"Károly\", \"Sára\"),\n",
" (\"Mihály\", \"Vilma\"), (\"Dezső\", \"Vilma\"), (\"Vilma\", \"Antal\"), (\"Károly\", \"Mihály\"), (\"Elvira\", \"Adél\"),\n",
" (\"Izabella\", \"Adél\"), (\"Mihály\", \"Izabella\"), (\"Géza\", \"Vilma\"), (\"Károly\", \"Elvira\"), (\"Elvira\", \"Mihály\"),\n",
" (\"Géza\", \"Dezső\"), (\"Sára\", \"Adél\"), (\"Géza\", \"Adél\"), (\"Géza\", \"Izabella\"), (\"Izabella\", \"Dezső\") \n",
"]\n",
"counter = []\n",
"maxcount = 0\n",
"bestpair = []\n",
"counterer = 0\n",
"\n",
"for pair in edges:\n",
" counterer = 0\n",
" counter = []\n",
" \n",
" for a in edges:\n",
" if pair[0] in a:\n",
" other = a[1] if a[0] == pair[0] else a[0]\n",
" counter.append(other)\n",
" \n",
" for b in edges:\n",
" if pair[1] in b:\n",
" other = b[1] if b[0] == pair[1] else b[0]\n",
" if other in counter:\n",
" counterer += 1\n",
" \n",
" if maxcount < counterer:\n",
" maxcount = counterer\n",
" bestpair = pair\n",
"\n",
"print(f\"A legtöbb közös ismerősük {bestpair} személyeknek van, szám szerint {maxcount}.\")\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A legtöbb közös ismerősük ('Adél', 'Mihály') személyeknek van, szám szerint 4.\n"
]
}
],
"source": [
"from collections import defaultdict\n",
"\n",
"def find_most_common_friends(edges):\n",
" # Szomszédsági lista létrehozása\n",
" adj_list = defaultdict(set)\n",
" for a, b in edges:\n",
" adj_list[a].add(b)\n",
" adj_list[b].add(a)\n",
"\n",
" max_common = 0\n",
" best_pair = ()\n",
"\n",
" # Minden lehetséges személypár közötti közös ismerősök keresése\n",
" persons = list(adj_list.keys())\n",
" for i in range(len(persons)):\n",
" for j in range(i + 1, len(persons)):\n",
" person1 = persons[i]\n",
" person2 = persons[j]\n",
" # Közös ismerősök metszetének meghatározása\n",
" common_friends = adj_list[person1].intersection(adj_list[person2])\n",
" common_count = len(common_friends)\n",
"\n",
" # Ha ez a páros több közös ismerőssel rendelkezik, frissítjük az eredményt\n",
" if common_count > max_common:\n",
" max_common = common_count\n",
" best_pair = (person1, person2)\n",
"\n",
" return best_pair, max_common\n",
"\n",
"# Az adott edges listán meghívjuk a függvényt\n",
"edges = [\n",
" (\"Adél\", \"Dezső\"), (\"Géza\", \"Mihály\"), (\"Károly\", \"Adél\"), (\"Antal\", \"Mihály\"), (\"Károly\", \"Sára\"),\n",
" (\"Mihály\", \"Vilma\"), (\"Dezső\", \"Vilma\"), (\"Vilma\", \"Antal\"), (\"Károly\", \"Mihály\"), (\"Elvira\", \"Adél\"),\n",
" (\"Izabella\", \"Adél\"), (\"Mihály\", \"Izabella\"), (\"Géza\", \"Vilma\"), (\"Károly\", \"Elvira\"), (\"Elvira\", \"Mihály\"),\n",
" (\"Géza\", \"Dezső\"), (\"Sára\", \"Adél\"), (\"Géza\", \"Adél\"), (\"Géza\", \"Izabella\"), (\"Izabella\", \"Dezső\") \n",
"]\n",
"\n",
"best_pair, common_friends_count = find_most_common_friends(edges)\n",
"print(f\"A legtöbb közös ismerősük {best_pair} személyeknek van, szám szerint {common_friends_count}.\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3. feladat [10p]\n",
"\n",
"Az [unicef.txt](unicef.txt) szövegfájl a világ 5 év alatti népességének élelmezési helyzetéről tartalmaz adatokat. Az egyes sorok felméréseknek felelnek meg, a felmérések országonként időbeli sorrendben vannak felsorolva. Töltsük be az adatokat, határozzuk meg és írjuk ki az alábbi statisztikákat!\n",
"- Hány felmérés készült és hány országot érintett?\n",
"- Az alábbi statisztikákat csak azon felmérések alapján készítsük el, amelyeknél mind a három érintett indikátor (`Severe Wasting`, `Underweight`, `Overweight`) definiált (azaz ezek pozitív adatok). Ha egy országra több ilyen felmérés is van, akkor a legutóbbit vegyük figyelembe!\n",
" - Mely 5 országban a legmagasabb a `Severe Wasting` indikátor?\n",
" - Az országok hányadrészében magasabb az `Underweight` indikátor az `Overweight` indikátornál?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3. feladat [10p]\n",
"\n",
"Az [unicef.txt](unicef.txt) szövegfájl a világ 5 év alatti népességének élelmezési helyzetéről tartalmaz adatokat. Az egyes sorok felméréseknek felelnek meg, a felmérések országonként időbeli sorrendben vannak felsorolva. Töltsük be az adatokat, határozzuk meg és írjuk ki az alábbi statisztikákat!\n",
"- Hány felmérés készült és hány országot érintett?\n",
"- Az alábbi statisztikákat csak azon felmérések alapján készítsük el, amelyeknél mind a három érintett indikátor (`Severe Wasting`, `Underweight`, `Overweight`) definiált (azaz ezek pozitív adatok). Ha egy országra több ilyen felmérés is van, akkor a legutóbbit vegyük figyelembe!\n",
" - Mely 5 országban a legmagasabb a `Severe Wasting` indikátor?\n",
" - Az országok hányadrészében magasabb az `Underweight` indikátor az `Overweight` indikátornál?"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Country United Nations Region United Nations Sub-Region \\\n",
"0 AFGHANISTAN Asia Southern Asia \n",
"1 AFGHANISTAN Asia Southern Asia \n",
"2 AFGHANISTAN Asia Southern Asia \n",
"3 ALBANIA Europe Southern Europe \n",
"4 ALBANIA Europe Southern Europe \n",
"\n",
" World Bank Income Classification Survey Year Survey Sample (N) \\\n",
"0 Low Income 1997 4846.0 \n",
"1 Low Income 2004 946.0 \n",
"2 Low Income 2013 21922.0 \n",
"3 Upper Middle Income 1996-98 7642.0 \n",
"4 Upper Middle Income 2000 1382.0 \n",
"\n",
" Severe Wasting Wasting Stunting Underweight Overweight \\\n",
"0 NaN 18,2 53,2 44,9 6,5 \n",
"1 3,5 8,6 59,3 32,9 4,6 \n",
"2 4,0 9,5 40,9 25,0 5,4 \n",
"3 NaN 8,1 20,4 7,1 9,5 \n",
"4 6,2 12,2 39,2 17,0 30,0 \n",
"\n",
" Source Notes \\\n",
"0  Afghanistan 1997 multiple indicator baseline ... Converted estimates \n",
"1 Summary report of the national nutrition surve... NaN \n",
"2 Afghanistan National Nutrition Survey 2013. (pending reanalysis) \n",
"3 National study on nutrition in Albania. Instit... Converted estimates \n",
"4 Multiple indicator cluster survey report Alban... NaN \n",
"\n",
" U5 Population ('000s) \n",
"0 3637,632 \n",
"1 4667,487 \n",
"2 5235,867 \n",
"3 307,887 \n",
"4 278,753 \n"
]
}
],
"source": [
"import pandas as pd\n",
"\n",
"frame = pd.read_csv(\"unicef.txt\", sep=\"|\")\n",
"print(frame[:5])"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"keszult: 854\n",
"Orszag: 152\n"
]
}
],
"source": [
"orszag = frame[\"Country\"].count()\n",
"\n",
"print(\"keszult: \",orszag)\n",
"\n",
"city = frame.groupby(\"Country\")[\"Survey Year\"].count().count()\n",
"\n",
"\n",
"print(\"Orszag: \",city)"
]
}
],
"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.13.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}