{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Vizsgaminta 2." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. feladat [4p]\n", "\n", "A `planets` lista a Naprendszer bolygóinak tömegét és (átlagos) sugarát tartalmazza. Készítsünk programot, amely kiszámítja, hogy a bolygók felszínén érvényes nehézségi gyorsulás hányszorosa a földinek! A nehézségi gyorsulás képlete\n", "$$g = G \\frac{M}{R^2},$$\n", "ahol $G = 6,67408 \\cdot 10^{-11} \\frac{Nm^2}{kg^2}$ az univerzális gravitációs állandó, $M$ a bolygó tömege, $R$ pedig a bolygó tömegközéppontjától mért távolság. A program ne csak a `planets` listára működjön, hanem bármely ugyanilyen formátumú, bemenetre is! Elvárt futási eredmény:\n", "```\n", "\n", "Merkúr: 0.38\n", "Vénusz: 0.90\n", "Föld: 1.00\n", "...\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "planets = [\n", " # bolygó neve, tömeg(10^21kg), sugár(km)\n", " ('Merkúr', 330.2, 2439.7),\n", " ('Vénusz', 4868.5, 6051.8),\n", " ('Föld', 5973.6, 6371.0),\n", " ('Mars', 641.85, 3389.5),\n", " ('Jupiter', 1898600, 69911),\n", " ('Szaturnusz', 568460, 58232),\n", " ('Uránusz', 86832, 25362),\n", " ('Neptunusz', 102430, 24622)\n", "]" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Merkúr: 0.38\n", "Vénusz: 0.90\n", "Föld: 1.00\n", "Mars: 0.38\n", "Jupiter: 2.64\n", "Szaturnusz: 1.14\n", "Uránusz: 0.92\n", "Neptunusz: 1.15\n" ] } ], "source": [ "G = 6.67408 * 10 ** -11\n", "# A föld g-je\n", "M = planets[2][1] * 10 ** 21\n", "R = planets[2][2] * 1000\n", "fold_g = G * M / R ** 2\n", "for i in planets:\n", " # Az adott bolygó g-je\n", " M = i[1] * 10 ** 21\n", " R = i[2] * 1000\n", " g = G * M / R ** 2\n", " print(f'{i[0]}: {g / fold_g:.2f}')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. feladat [4p]\n", "\n", "Készítsünk programot, amely bekéri a felhasználótól $n$ értékét, szimulál $n$ darab kockadobást, majd kiírja, hogy mi volt a leghosszabb 6-os sorozat hossza! Példa futási eredmény:\n", "```\n", "n: 50\n", "31554643644341364414422455514666664664563666113524\n", "leghosszabb 6-os sorozat hossza: 5\n", "```" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "n: 20\n", "65656556655565566665\n", "A leghosszabb 6-os sorozat hossza: 4\n" ] } ], "source": [ "import random\n", "n = int(input('n: '))\n", "# A generált számsorozat egy sztringben (hogy kiírjuk a generált adatokat)\n", "st = ''\n", "# A leghosszabb 6-os sorozat hossza\n", "maxh = 0\n", "# Az aktuális 6-os sorozat hossza\n", "db = 0\n", "# Van-e már 'megkezdett' 6-os sorozat\n", "van = False\n", "for i in range(n):\n", " # Az aktuális dobás véletlen generálása\n", " # A teszthez csak 5 és 6 között, hogy hosszabb legyen az eredmény (de ez átirandó (1, 6)-ra)\n", " x = random.randint(5, 6)\n", " if x == 6:\n", " if van: \n", " db += 1\n", " else:\n", " # Most kezdődik egy 6-os sorozat\n", " db = 1\n", " van = True\n", " else:\n", " van = False\n", " # Hosszabb-e mint az eddigi leghosszabb\n", " if db > maxh: \n", " maxh = db\n", " # A kiíráshoz \n", " st += str(x)\n", "print(st) \n", "print('A leghosszabb 6-os sorozat hossza:', maxh)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. feladat [12p]\n", "\n", "A [hotels.txt](hotels.txt) szövegfájl Las Vegas-i szállodák értékeléséről tartalmaz adatokat. Minden sor egy szállóvendég által kiosztott értékeléshez tartozik. Készítsünk programot, amely kiszámítja és kiírja az alábbi statisztikákat:\n", "- A szobák száma (`Nr. rooms`) alapján melyik az öt legnagyobb szálloda?\n", "- Melyik szállodá(ka)t értékelték (`Score`) átlagosan a legmagasabbra és mekkora ez az átlagpont?\n", "- Hány ponttal magasabb a medencével (`Pool`) rendelkező szállodák átlagos értékelése (`Score`) a többi szálloda átlagos értékelésénél?" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Az 5 legnagyobb szálloda:\n", "1. The Venetian Las Vegas Hotel 4027\n", "2. Excalibur Hotel & Casino 3981\n", "3. Bellagio Las Vegas 3933\n", "4. Circus Circus Hotel & Casino Las Vegas 3773\n", "5. Caesars Palace 3348\n", "\n", "A maximális (átlagos) pontszám: 4.625\n", "Azok a szállodák, akik a maximális pontot kapták:\n", "Wynn Las Vegas, 4.625\n", "\n", "Medencés átlagpont: 4.17\n", "Nem medencés átlagpont: 3.21\n", "Különbség: 0.96\n" ] } ], "source": [ "# Megoldás 1. (hagyományos eszközökkel)\n", "f = open('hotels.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 5 legnagyobb szálloda\n", "d = {}\n", "for l in lines:\n", " t = l.strip().split(';')\n", " if t[0] not in d:\n", " d[t[0]] = int(t[1])\n", "\n", "# Listává alakítjuk a szótár adatait (a könnyebb listázás végett)\n", "l = list(d.items())\n", "# A szobák száma szerint csökkenően rendezzük az adatokat\n", "l = sorted(l, key=lambda p: p[1], reverse = True)\n", "print('Az 5 legnagyobb szálloda:')\n", "# A sorokat ellátjuk sorszámmal és az oszlopokat igazítjuk\n", "for x in enumerate(l[:5]):\n", " print(f'{x[0] + 1}. {x[1][0]:40} {x[1][1]:10}')\n", " \n", "# A legmagasabb értékelést kapó szálloda/szállodák\n", "d = {}\n", "for l in lines:\n", " t = l.strip().split(';')\n", " if t[0] in d:\n", " d[t[0]][0] += int(t[9])\n", " d[t[0]][1] += 1\n", " else:\n", " d[t[0]] = [int(t[9]), 1]\n", "# Az átlagok kiszámítása\n", "atlag = [x / y for (x, y) in list(d.values())]\n", "max_atlag = max(atlag)\n", "print()\n", "print('A maximális (átlagos) pontszám:', max_atlag)\n", "print('Azok a szállodák, akik a maximális pontot kapták:')\n", "for i in range(len(atlag)):\n", " if atlag[i] == max_atlag:\n", " print(f'{list(d.keys())[i]}, {round(atlag[i], 3)}') \n", " \n", "# A medencével rendelkező szállodák értékelése a többihez képest\n", "# 'm' előtag: medencével rendelkező, 'mn' előtag: medencével nem rendelkező \n", "mdb, mossz, mndb, mnossz = 0, 0, 0, 0\n", "for l in lines:\n", " t = l.strip().split(';')\n", " if t[2] == 'YES':\n", " mdb += 1; mossz += int(t[9]) \n", " else: \n", " mndb += 1; mnossz += int(t[9]) \n", "print()\n", "if mdb > 0:\n", " if mndb > 0:\n", " matl = mossz / mdb\n", " mnatl = mnossz / mndb\n", " print(f'Medencés átlagpont: {matl:.2f}')\n", " print(f'Nem medencés átlagpont: {mnatl:.2f}')\n", " print(f'Különbség: {matl - mnatl:.2f}')\n", " else:\n", " print('Minden szálloda úszómedencével ellátott!')\n", "else:\n", " print('Egyik szállodában sincs úszómedence!')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | Hotel name | \n", "Nr. rooms | \n", "Pool | \n", "Gym | \n", "Tennis court | \n", "Spa | \n", "Casino | \n", "Traveler type | \n", "Period of stay | \n", "Score | \n", "
---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "Circus Circus Hotel & Casino Las Vegas | \n", "3773 | \n", "NO | \n", "YES | \n", "NO | \n", "NO | \n", "YES | \n", "Friends | \n", "Dec-Feb | \n", "5 | \n", "
1 | \n", "Circus Circus Hotel & Casino Las Vegas | \n", "3773 | \n", "NO | \n", "YES | \n", "NO | \n", "NO | \n", "YES | \n", "Business | \n", "Dec-Feb | \n", "3 | \n", "
2 | \n", "Circus Circus Hotel & Casino Las Vegas | \n", "3773 | \n", "NO | \n", "YES | \n", "NO | \n", "NO | \n", "YES | \n", "Families | \n", "Mar-May | \n", "5 | \n", "
3 | \n", "Circus Circus Hotel & Casino Las Vegas | \n", "3773 | \n", "NO | \n", "YES | \n", "NO | \n", "NO | \n", "YES | \n", "Friends | \n", "Mar-May | \n", "4 | \n", "
4 | \n", "Circus Circus Hotel & Casino Las Vegas | \n", "3773 | \n", "NO | \n", "YES | \n", "NO | \n", "NO | \n", "YES | \n", "Solo | \n", "Mar-May | \n", "4 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
499 | \n", "The Westin las Vegas Hotel Casino & Spa | \n", "826 | \n", "YES | \n", "YES | \n", "NO | \n", "YES | \n", "YES | \n", "Couples | \n", "Sep-Nov | \n", "5 | \n", "
500 | \n", "The Westin las Vegas Hotel Casino & Spa | \n", "826 | \n", "YES | \n", "YES | \n", "NO | \n", "YES | \n", "YES | \n", "Couples | \n", "Sep-Nov | \n", "4 | \n", "
501 | \n", "The Westin las Vegas Hotel Casino & Spa | \n", "826 | \n", "YES | \n", "YES | \n", "NO | \n", "YES | \n", "YES | \n", "Friends | \n", "Sep-Nov | \n", "4 | \n", "
502 | \n", "The Westin las Vegas Hotel Casino & Spa | \n", "826 | \n", "YES | \n", "YES | \n", "NO | \n", "YES | \n", "YES | \n", "Families | \n", "Dec-Feb | \n", "2 | \n", "
503 | \n", "The Westin las Vegas Hotel Casino & Spa | \n", "826 | \n", "YES | \n", "YES | \n", "NO | \n", "YES | \n", "YES | \n", "Families | \n", "Dec-Feb | \n", "4 | \n", "
504 rows × 10 columns
\n", "