Informatika2-2020/Gyak04

A MathWikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „előző fel következő = Feladatok = == Bevásárlás == A feladat a már e…”)
 
 
(egy szerkesztő 4 közbeeső változata nincs mutatva)
4. sor: 4. sor:
 
== Bevásárlás ==
 
== Bevásárlás ==
  
A feladat a már előadáson látott feladat egy változata.
+
A <tt>hazi</tt> rendszerben az '''<tt>shopping</tt>''' feladat.
Írjunk olyan függvényt, melynek két bemenete két szótár. Az első az árak szótár, mely a boltban található összes áruhoz hozzárendeli annak árát. A másik a mennyiségek szótár, mely kulcsként tartalmazza, hogy mit vettünk értékként, pedig hogy mennyit vettünk az adott termékből. Pl:
+
  
arak = {
+
== Enciklopédia ==
'alma': 150,
+
A <tt>hazi</tt> rendszerben az '''<tt>enciclopedia</tt>''' feladat.
'szilva': 190,
+
'ananász': 450,
+
'banán': 300}
+
  
mennyisegek = {
+
== Osztályzás ==
'banán': 0.6,  
+
A vizsga kijavítása után azt szeretnénk hogy a hallgatók megtudhassák az internetről a eredményüket, de nem akarjuk mindenkiét kitenni egy nagy táblázatban, mert lehet hogy van aki nem akarja hogy a többiek tudják hogy teljesített. Ezért létrehoztunk egy honlapot, ahol beírhatja bárki a NEPTUN-kódját, és a honlap kiírja az osztályzatát.
'alma': 1.5,  
+
'ananász': 2 }
+
  
A függvény adja meg hogy mennyit kell fizetnünk ezért a bevásárlásért (mennyi a kosarunk ára).
+
Ennek részeként írjunk egy python függvényt, ami a százalékos eredményekből és NEPTUN-kódból ki tudja adni a megfelelő hallgató osztályzatát. A függvény neve legyen <tt>osztalyzas</tt>, két paramétere legyen
 +
* ''szazalekok'', egy python szótár (dict), ami minden NEPTUN-kódhoz tartalmazza az adott hallgató százalékos eredményét.
 +
* ''neptunkod'', a lekérdezett NEPTUN-kód.
  
Feltételezhetjük hogy olyan dolog nincs a kosarunkban, ami nincs a bolt készletében (a ''mennyiségek'' kulcsai mind benne vannak az ''árak'' szótárban).
+
A függvény egy 1 és 5 közötti számmal térjen vissza, a hallgató osztályzatával. A jegyekhez szükséges elért százalék rendre 40, 55, 70, 85, a 2-eshez, 3-ashoz, 4-eshez illetve 5-öshöz.
 +
 
 +
== Ötösök ==
 +
Miután kijavítottuk a vizsgát, és megvannak a százalékos eredmények, szeretnénk kiszűrni belőle az ötösök listáját, hogy megdicsérhessük őket az előadáson.
 +
 
 +
Írjunk egy python függvényt, ami ki tudja szűrni az eredményekből az ötösöket. A függvény neve legyen <tt>otosok</tt>, és egy paramétere legyen
 +
* ''szazalekok'', egy python szótár (dict), ami minden NEPTUN-kódhoz tartalmazza az adott hallgató százalékos eredményét.
 +
 
 +
A függvény egy listát adjon vissza, amiben az ötöst elért hallgatók NEPTUN-kódjai vannak. Akkor ötös egy hallgató, ha legalább 85 százalékot elért.
 +
 
 +
 
 +
== Gólkirály ==
 +
Koppány és barátai minden hétvégén játszanak egy barátságos focimeccset az egyik helyi focipályán.
 +
Szeretnék tudni az év végén hogy ki rúgta közülük a legtöbb gólt, hogy egy kicsit megünnepelhessék az illető teljesítményét.
 +
Koppány megkért minket hogy írjunk egy python függvényt, ami segít a meccs végén elkönyvelni valaki góljait.
 +
 
 +
A függvény neve legyen <tt>golkiraly</tt>, és három paramétere legyen
 +
* ''eredmenyek'', az év folyamán eddig lőtt gólok száma, szótár formájában, amiben mindenkinek a nevéhez hozzá van rendelve hogy eddig mennyit lőtt
 +
* ''jatekos'' és ''darab'' az elkönyvelendő gólok lövőjének neve, és a góljainak száma
 +
 
 +
A függvény adja vissza az ''eredmenyek''-nek megfelelően módosított változatát, azaz ha eddig nem szerepelt benne játékos, akkor most szerepeljen benne ''darab''-bal, ha eddig is szerepelt benne, akkor pedig növeljük meg a hozzá könyvelt gólok számát ''darab''-bal.
 +
 
 +
== Leltár frissítés ==
 +
Bemenetként két dolgot kapunk:
 +
* ''leltar'' egy lista, aminek elemei egy bolt leltárában található tárgyak, a sorszámukkal jelképezve. Ugyanaz a sorszám többször is szerepelhet, ha abból a tárgyból több is van raktáron.
 +
* Némely raktáron levő tárgynak megváltozott a sorszáma. ''ujszam'' egy szótár, ami a megváltozott sorszámokat tartalmazza, a régihez rendelve az újat. Tehát pl. ha egy tárgy sorszáma változott, régen 3 volt, és most 4 lett, akkor azt a "{3: 4}" szótár jelképezné.
 +
 
 +
Adjuk vissza a kijavított leltár listát, amiben minden átszámozott tárgyat átszámoztunk. (A sorrendet nem szabad módosítani.)
 +
 
 +
'''Segítség'''
 +
* Szótárakról leírás az előző féléves előadásokból itt.
 +
* Le lehet ellenőrizni hogy egy elem szerepel-e a szótárban kulcsként a <tt>x in d</tt> kifejezéssel.
 +
* Egy lehetséges megoldás végigmenni a listán és (egy elágazást használva) csak azokat az elemeket átírni amik változnak.
 +
* VAGY Listaértelmezéssel is meg lehet oldani. Listaértelmezésen belül működik az <tt>x if c else y</tt> kifejezés.
 +
 
 +
== Közel ==
 +
A <tt>kozel</tt> nevű függvény megírása a feladat. A függvény paramétere:
 +
* ''l'', egy lista, ami ''n''-dimenziós egységvektorokat tartalmaz.
 +
 
 +
Úgy lehet megállapítani hogy mennyire kicsi a szög két ''n''-dimenziós egységvektor között, hogy a skalárszorzatukat vesszük, és ha kisebb a szög, nagyobb a skaláris szorzat.
 +
(A skaláris szorzatnak az inverz koszinusza lenne a tényleges szög, de most ennél a feladatnál elég a skalárszorzattal foglalkozni.)
 +
Az ''l'' listában megadott egységvektorok közül keressük meg a két legközelebb levőt, és adjuk vissza a skaláris szorzatukat.
 +
 
 +
A <tt>kozel</tt> függvény megírásához segít ha megírjuk külön a <tt>skalar_szorzat</tt> nevű függvényt, úgyhogy először írjuk meg azt. Ennek a függvénynek a paraméterei:
 +
* ''a'' és ''b'', két vektor, listák formájában.
 +
Adjuk vissza a skaláris szorzatukat, ami úgy kapható meg, hogy mind az ''n'' dimenzióban összeszorozzuk a megfelelő koordinátájukat, és ezek összegét vesszük.
 +
 
 +
'''Segítség'''
 +
* Ajánlom hogy a </tt>skalar_szorzat</tt> függvényt teszteljétek valamelyik előadáson tanult módszerrel, mielőtt megpróbáltok nekiállni a <tt>kozel</tt> függvénynek.
 +
Teszteléshez használható, hogy tudjuk, hogy merőleges vektorok (pl. <tt>[0, 1]</tt> és <tt>[1, 0]</tt>) skalár szorzata 0, egy irányba mutató vektorok skalár szorzata pedig a hosszuk szorzata.
 +
* A <tt>kozel</tt>-ben egy kétszeres ciklus kell, hogy minden párt megvizsgáljunk, és megtaláljuk a maximálisat.
 +
* Mivel egységvektorokról van szó, a skaláris szorzat értéke mindig legalább -1.
 +
 
 +
== Prímszám-e ==
 +
 
 +
Készítsünk egy szótárat, melyben a prímszámok vannak, mint kulcsok 2-től 100-ig, az értékek pedig igaz-hamis értékek, hogy az adott prím [https://hu.wikipedia.org/wiki/Mersenne-pr%C3%ADmek Mersenne-prím]-e.
 +
 
 +
Ehhez 2 segéd függvényt érdemes írni:
 +
* Visszaadja 2-től n-ig a prímek listáját (ezt már volt korábban)
 +
* Megmondja egy prímszámról, hogy Mersenne prím-e: adjunk a számhoz 1-et, majd azt, hogy 2 hatvány-e tesztelhetjük úgy, hogy vizsgáljuk milyen maradékot ad 2-vel osztva, ha 0-t, osztjuk 2-vel, és vizsgáljuk tovább.
  
 
[[Informatika2-2020/Gyak03|előző]] [[Informatika2-2020#Gyakorlat|fel]] [[Informatika2-2020/Gyak05|következő]]
 
[[Informatika2-2020/Gyak03|előző]] [[Informatika2-2020#Gyakorlat|fel]] [[Informatika2-2020/Gyak05|következő]]

A lap jelenlegi, 2020. március 5., 10:03-kori változata

előző fel következő

Tartalomjegyzék

Feladatok

Bevásárlás

A hazi rendszerben az shopping feladat.

Enciklopédia

A hazi rendszerben az enciclopedia feladat.

Osztályzás

A vizsga kijavítása után azt szeretnénk hogy a hallgatók megtudhassák az internetről a eredményüket, de nem akarjuk mindenkiét kitenni egy nagy táblázatban, mert lehet hogy van aki nem akarja hogy a többiek tudják hogy teljesített. Ezért létrehoztunk egy honlapot, ahol beírhatja bárki a NEPTUN-kódját, és a honlap kiírja az osztályzatát.

Ennek részeként írjunk egy python függvényt, ami a százalékos eredményekből és NEPTUN-kódból ki tudja adni a megfelelő hallgató osztályzatát. A függvény neve legyen osztalyzas, két paramétere legyen

  • szazalekok, egy python szótár (dict), ami minden NEPTUN-kódhoz tartalmazza az adott hallgató százalékos eredményét.
  • neptunkod, a lekérdezett NEPTUN-kód.

A függvény egy 1 és 5 közötti számmal térjen vissza, a hallgató osztályzatával. A jegyekhez szükséges elért százalék rendre 40, 55, 70, 85, a 2-eshez, 3-ashoz, 4-eshez illetve 5-öshöz.

Ötösök

Miután kijavítottuk a vizsgát, és megvannak a százalékos eredmények, szeretnénk kiszűrni belőle az ötösök listáját, hogy megdicsérhessük őket az előadáson.

Írjunk egy python függvényt, ami ki tudja szűrni az eredményekből az ötösöket. A függvény neve legyen otosok, és egy paramétere legyen

  • szazalekok, egy python szótár (dict), ami minden NEPTUN-kódhoz tartalmazza az adott hallgató százalékos eredményét.

A függvény egy listát adjon vissza, amiben az ötöst elért hallgatók NEPTUN-kódjai vannak. Akkor ötös egy hallgató, ha legalább 85 százalékot elért.


Gólkirály

Koppány és barátai minden hétvégén játszanak egy barátságos focimeccset az egyik helyi focipályán. Szeretnék tudni az év végén hogy ki rúgta közülük a legtöbb gólt, hogy egy kicsit megünnepelhessék az illető teljesítményét. Koppány megkért minket hogy írjunk egy python függvényt, ami segít a meccs végén elkönyvelni valaki góljait.

A függvény neve legyen golkiraly, és három paramétere legyen

  • eredmenyek, az év folyamán eddig lőtt gólok száma, szótár formájában, amiben mindenkinek a nevéhez hozzá van rendelve hogy eddig mennyit lőtt
  • jatekos és darab az elkönyvelendő gólok lövőjének neve, és a góljainak száma

A függvény adja vissza az eredmenyek-nek megfelelően módosított változatát, azaz ha eddig nem szerepelt benne játékos, akkor most szerepeljen benne darab-bal, ha eddig is szerepelt benne, akkor pedig növeljük meg a hozzá könyvelt gólok számát darab-bal.

Leltár frissítés

Bemenetként két dolgot kapunk:

  • leltar egy lista, aminek elemei egy bolt leltárában található tárgyak, a sorszámukkal jelképezve. Ugyanaz a sorszám többször is szerepelhet, ha abból a tárgyból több is van raktáron.
  • Némely raktáron levő tárgynak megváltozott a sorszáma. ujszam egy szótár, ami a megváltozott sorszámokat tartalmazza, a régihez rendelve az újat. Tehát pl. ha egy tárgy sorszáma változott, régen 3 volt, és most 4 lett, akkor azt a "{3: 4}" szótár jelképezné.

Adjuk vissza a kijavított leltár listát, amiben minden átszámozott tárgyat átszámoztunk. (A sorrendet nem szabad módosítani.)

Segítség

  • Szótárakról leírás az előző féléves előadásokból itt.
  • Le lehet ellenőrizni hogy egy elem szerepel-e a szótárban kulcsként a x in d kifejezéssel.
  • Egy lehetséges megoldás végigmenni a listán és (egy elágazást használva) csak azokat az elemeket átírni amik változnak.
  • VAGY Listaértelmezéssel is meg lehet oldani. Listaértelmezésen belül működik az x if c else y kifejezés.

Közel

A kozel nevű függvény megírása a feladat. A függvény paramétere:

  • l, egy lista, ami n-dimenziós egységvektorokat tartalmaz.

Úgy lehet megállapítani hogy mennyire kicsi a szög két n-dimenziós egységvektor között, hogy a skalárszorzatukat vesszük, és ha kisebb a szög, nagyobb a skaláris szorzat. (A skaláris szorzatnak az inverz koszinusza lenne a tényleges szög, de most ennél a feladatnál elég a skalárszorzattal foglalkozni.) Az l listában megadott egységvektorok közül keressük meg a két legközelebb levőt, és adjuk vissza a skaláris szorzatukat.

A kozel függvény megírásához segít ha megírjuk külön a skalar_szorzat nevű függvényt, úgyhogy először írjuk meg azt. Ennek a függvénynek a paraméterei:

  • a és b, két vektor, listák formájában.

Adjuk vissza a skaláris szorzatukat, ami úgy kapható meg, hogy mind az n dimenzióban összeszorozzuk a megfelelő koordinátájukat, és ezek összegét vesszük.

Segítség

  • Ajánlom hogy a </tt>skalar_szorzat</tt> függvényt teszteljétek valamelyik előadáson tanult módszerrel, mielőtt megpróbáltok nekiállni a kozel függvénynek.

Teszteléshez használható, hogy tudjuk, hogy merőleges vektorok (pl. [0, 1] és [1, 0]) skalár szorzata 0, egy irányba mutató vektorok skalár szorzata pedig a hosszuk szorzata.

  • A kozel-ben egy kétszeres ciklus kell, hogy minden párt megvizsgáljunk, és megtaláljuk a maximálisat.
  • Mivel egységvektorokról van szó, a skaláris szorzat értéke mindig legalább -1.

Prímszám-e

Készítsünk egy szótárat, melyben a prímszámok vannak, mint kulcsok 2-től 100-ig, az értékek pedig igaz-hamis értékek, hogy az adott prím Mersenne-prím-e.

Ehhez 2 segéd függvényt érdemes írni:

  • Visszaadja 2-től n-ig a prímek listáját (ezt már volt korábban)
  • Megmondja egy prímszámról, hogy Mersenne prím-e: adjunk a számhoz 1-et, majd azt, hogy 2 hatvány-e tesztelhetjük úgy, hogy vizsgáljuk milyen maradékot ad 2-vel osztva, ha 0-t, osztjuk 2-vel, és vizsgáljuk tovább.

előző fel következő

Személyes eszközök