Python programozás

User info

Welcome, Guest! Please login or register.


You are here » Python programozás » Test forum » Test topic


Test topic

Posts 1 to 14 of 14

1

Ezt a fórumot azért hoztam létre, hogy segítsem a Programozás szakkörre, valamint az emelt szintű érettségi fakultációra járó diákokat abban, hogy a szakkörön/órán Python nyelven megoldott feladatokat otthon, nyugodt körülmények között is ki tudják próbálni. El tudjanak gondolkodni azon, hogy mit, miért csináltunk és mi, mit jelent.
Arra kérek mindenkit, aki ezt a fórumot olvassa, hogy írjon véleményt az egyes feladatokra írt programokkal kapcsolatban: hogyan lehetne másképpen (rövidebben, más ötlet alapján) megírni az egyes programokat.
A Python programot (annak is a legfrissebb verzióját) a python.org oldalról lehet letölteni. Miután letöltöttük a telepítőprogramot egy (mondjuk) Python nevű mappába, el kell indítani. Néhány gombnyomás után fenn lesz a Python a számítógépünkön és már használhatjuk is. Ajánlott a kezdés előtt egy mappát létrehozni a forrásprogramok számára! Célszerű az elején egyszerű programok írásával és futtatásával kezdeni, mint például téglalap területének és kerületének a kiszámítása, hogy mielőbb megismerjük a Python programok szerkezetét.
Mindenkinek sok sikert és örömöt kívánok a Python programozás megismeréséhez!

Köszönettel: Piroska István

0

2

Első alkalom
Helló Skacok!

Mostantól ezen a "titkos" csatornán fogunk "beszélgetni" egymással a Python programozás szépségeiről.
Ide fogom feltölteni minden egyes szakkör anyagát, a példaprogramokkal együtt. Ha tehát valaki nem tud eljönni egy adott szakkörre,
akkor sem kell elkenődnie, mert ezen a fórumon mindent megtalál az adott szakkörön történtekről.
Persze azért örülnék, ha rendszeresen járnátok szakkörre (szerda, 8. óra, 106-os terem), mert a személyes találkozások varázsa semmivel sem pótolható.
Indulásként ennyit.
Íme a 2018. november 07-i szakkör témái: adatok beolvasása a Pythonban, vezérlési szerkezetek (kétirányú, többirányú)
A programo(ka)t a szakkör után fogom (még aznap este) feltölteni.
Egy minta program, ami biztosan lesz a szakkörön: döntsük el egy számról, hogy páros-e! Íme a program forráskódja:
#Döntsük el egy beolvasott számról, hogy páros-e!
a = int(input("Kérem, írja be az egész számot!"))
if a % 2 == 0:
    print("A szám páros.")
else:
    print("A szám nem páros, vagyis páratlan.")

0

3

Második alkalom.
Vezérlési szerkezetek a Pythonban.
1. Elágazások 
    a, kétirányú elágazás: ha (logikai feltétel) akkor utasítások1, különben utasítások2
    Példa: Döntsük el egy bekért egész számról, hogy páros-e!
    A megoldás Pythonban:
n = int(input("Kérem az egész számot! "))
if n % 2 == 0:
    print("A szám páros.")
else:
    print("A szám páratlan.")

   b, Többirányú elágazás: amikor több logikai feltétel szerepel és ezek értékétől függ, hogy mely utasítá(soka)t kell végrehajtani.
   Példa: Kérjünk be egy pozitív egész számot. Legyen pl. egy írásbeli érettségi dolgozat pontszáma matematikából. Írjuk ki, hogy
   milyen érettségi jegy tartozik az adott pontszámhoz!
   A megoldás Pythonban:
n = int(input("Kérem a pontszámot! "))
if n < 25:
    print("elégtelen")
elif n < 40:
    print("elégséges")
elif n < 60:
    print("közepes")
elif n < 80:
    print("jó")
else: print("jeles")

2. Ciklusok
   a, Megszámlálásos ciklus: meghatározott lépésszámú ciklus. Amikor egy bizonyos műveletsorozatot adott számú esetben
   kell végrehajtani. Például: adjuk össze 1-től 9-ig a pozitív egész számokat és írjuk ki az összeget!   A megoldás Pythonban:
s = 0 #ebben a változóban lesz a számok összege. Ez a kezdőérték adás
for i in range (1, 10):     #megszámlálásos ciklus, a ciklusváltozó (i) 1-től megy 9-ig
    s = s + i
print("A számok összege: ", s)

Itt a vége a második résznek. Fuss el véle!
Folytatása következik a jövő héten, szerdán (2018. november 14.).

0

4

Harmadik alkalom (2018. november 14.)
Átismételtük az első két alkalommal elhangzott dolgokat:
- matematikai műveletek a Pythonban (+, -, *, /, %, //, **

- sztringkezelő műveletek (szo[:5], szo[5:], szo[3,7], + konkatenáció (két vagy több sztring összefűzése), 3*szo)

- elágazások a Pythonban (kétirányú, többirányú)

- ciklusok a Pythonban: előltesztelő, megszámlálásos (példa a második alkalomnál)

0

5

Negyedik alkalom (2018. november 21.)
Új anyag: további példa megszámlálásos ciklusra
Olvassunk be a billentyűzetről N darab számot, adjuk ezeket össze és írjuk ki az összeget!
s = 0
for i in range(N):
   x = int(input("Kérem a számot!"))
   s = s + x
print("A számok összege: ", s)

Írassuk ki a 100-nál kisebb, 3-mal osztva 1 maradékot adó pozitív egész számokat!
for i in range(100):
    if i % 3 == 1:
        print(i)

Ugyanennek a feladatnak a megoldása előltesztelő ciklussal:
i = 1
while i < 100:
    if i % 3 == 1:
        print(i)
    i += 1

További példa előltesztelő ciklusra: írassuk ki a 200-nál nem nagyobb Fibonacci számokat!
a, b = 1, 1
while a <= 200:
   print(a)
   a, b = b, a+b

0

6

Ötödik alkalom (november 28.)

Ismétlés:

1. Algoritmusok, algoritmus leíró eszközök
Algoritmus: egy feladat megoldásának véges sok lépésben való egyértelmű és teljes leírása.
Algoritmus leíró eszközök: folyamatábra, struktogram, mondatszerű leírás.
Programozási tételek:

Sorozathoz értéket rendelő tételek:
a, Összegzés tétele: adott N darab szám egy a() vektorban. Adjuk össze a számokat és írjuk ki az összeget!
s = 0
ciklus i = 1-től N-ig
    s = s + a(i)
ciklus vége
Ki: s (ebben van a számok összege)
b, Eldöntés tétele: adott egy sorozat az a() vektorban és a sorozat elemein értelmezett T tulajdonság. Kérdés: van-e a sorozatban T tulajdonságú elem.
i = 1
ciklus amíg i<=N és a(i) nem T tulajdonságú
    i = i + 1
ciklus vége
van = (i<=N)
Ha van, akkor Ki: ’van T tulajdonságú elem a sorozatban’, különben Ki: ’nincs T tulajdonságú elem a sorozatban’
c, Elágazások (szelekció)
    I. Kétirányú elágazás
   II. Többirányú elágazá

Példaprogramok a programozási tételek alkalmazására.
1. Olvassunk be egy egész számot a billentyűzetről és döntsük el, hogy a szám osztható-e 2-vel, illetve 3-mal!

x = int(input("Írd be a számot!"))
if x % 2 == 0:
    if x % 3 == 0:
        print("A szám osztható 6-tal.")
    else:
        print("A szám osztható 2-vel, de 3-mal nem.")
else:
    if x % 3 != 0:
        print("A szám nem osztható sem 2-vel, sem 3-mal.")
    else:
        print("A szám nem osztható 2-vel, de 3-mal igen.")

2. Olvassunk be a konzolról egy szöveget, majd döntsük el, hogy van-e a szövegben magánhangzó!

x = input('Kérem, írja be a szöveget: ')
valasz = False
for betu in x:
    if betu == 'a' or betu == 'e' or betu == 'i' or betu == 'o' or betu == 'u':
        valasz = True
    if valasz:
        print('Van a szövegben magánhangzó.')
    else:
        print('Nincs a szövegben magánhangzó.')

0

7

A 2. feladat megoldásának javított változata. Az első változatban (for.. ciklus) a program minden egyes betűjét megvizsgálja a szövegnek, amire sok esetben NINCS szükség. Ezért célszerű előltesztelő ciklust alkalmazni. Íme:

x = input('Kérem, írja be a szöveget: ')
n = len(x)   #a szövegben levő karakterek számát adja értékül az N változónak
i = 0       # mert a stringet indexelése is 0-val kezdődik
while i < n and (x[i] != 'a' and x[i] != 'e' and x[i] != 'i' and x[i] != 'o' and x[i] != 'u'):
    i += 1      # i értékét növeljük 1-gyel
valasz = (i < n)
if valasz:
    print("Van a szövegben magánhangzó.")
else:
    print("Nincs a szövegben magánhangzó.")

Megjegyzés: a két változat közötti különbség igazából akkor derül ki, ha nagyon hosszú szöveget kell vizsgálni és a szöveg elején van magánhangzó.

0

8

Hatodik alkalom (2019. január 09.)

Milyen új feladatokat lehet az előző feladattal kapcsolatban (Van-e magánhangzó egy általunk beolvasott szövegben?) kitalálni? Például:
1. Hány magánhangzó van a beolvasott szövegben? (megszámolás tétele, itt már végig kell vizsgálni a beolvasott szöveg minden karakterét.). Az alábbi utasításokat kell a megfelelő helyekre beszúrni:
db = 0
db += 1
print("A beolvasott szövegben {0} darab magánhangzó van.".format(db))
2. Magánhangzóból vagy mássalhangzóból van-e több a beolvasott szövegben?
3. Melyik magánhangzóból hány darab van a beolvasott szövegben? (feltéve, hogy van benne magánhangzó!)

Az első feladat megoldása (ebben az alakjában csak a kisbetűk közötti és ékezetmentes magánhangzókat számolja össze!):
#Olvassunk be a billentyűzetről egy szöveget, majd határozzuk meg, hány magánhangzó van benne!
szoveg = input("Kérem, írja be a szöveget!")
db = 0      #ebben a változóban számoljuk a magánhangzókat
for betu in szoveg:
    if betu == 'a' or betu == 'e' or betu == 'i' or betu == 'o' or betu == 'u':
        db += 1
print("A szövegben levő magánhangzók száma: ", db)
##############################################

A második feladat megoldása:
#Olvassunk be egy szöveget, majd döntsük el, hogy magánhangzóból vagy mássalhangzóból van-e több!
x = input("Kérem, írja be a szöveget!")
dbmgh, dbmsh = 0, 0
for betu in x:
    if betu == 'a' or betu == 'e' or betu == 'i' or betu == 'o' or betu == 'u':
        dbmgh = dbmgh + 1
    else:
        dbmsh = dbmsh + 1
if dbmgh > dbmsh:
    print('Magánhangzóból van több.')
elif dbmgh == dbmsh:
    print('Ugyanannyi van mindkettőből.')
else:
    print('Mássalhangzóból van több.')
##############################################
A harmadik feladat megoldása (Melyik magánhangzóból hány darab van a beolvasott szövegben?):
#csak a kisbetűs és rövid magánhangzókat számoljuk össze! 
darab = [0, 0, 0, 0, 0] #ebben a listában fogjuk a magánhangzók darabszámát tárolni. Ez a kezdőérték adás
szoveg = input("Kérem, írja be a szöveget!")
for betu in szoveg:
    if betu == 'a':
        darab[0] = darab[0] + 1
    elif betu == 'e':
        darab[1] = darab[1] + 1
    elif betu == 'i':
        darab[2] = darab[2] + 1
    elif betu == 'o':
        darab[3] = darab[3] + 1
    elif betu == 'u':
        darab[4] = darab[4] + 1
print("a betűből ",darab[0])
print("e betűből ", darab[1])
print("i betűből ", darab[2])
print("o betűből ", darab[3])
print("u betűből ", darab[4], " darab van.")

################################################

0

9

Hetedik alkalom (2019. január 30.)
Az elmúlt szerdai órán 3 feladatot oldottunk meg. Ajándékul mellékelem 4. feladatként a másodfokú egyenlet megoldására vonatkozó programot.

1. Írjunk egy programot, amely egy N elemet tartalmazó listáról megmondja, hogy a szomszédos elemek között mekkora legnagyobb különbség abszolút értékben!
A megoldás:
adat = [3, 1, 8, 6, 4, 3, 12, 7, 5, 20, 16, 30]
max = abs(adat[1] - adat[0])
n = len(adat)
#print(n)
for i in range(1,n-1):
    if abs(adat[i+1]-adat[i]) > max:
        max = abs(adat[i+1]-adat[i])
print("A legnagyobb különbség abszolút értékben: ", max)
#######################################

2. Írjunk egy programot, amely egy N elemet tartalmazó listáról megmondja, hogy melyik két eleme között legkisebb a különbség és mennyi ez a legkisebb különbség!
A megoldás:
adat = [3, 1, 8, 6, 4, 3, 12, 7, 5, 20, 16, 30]
min = abs(adat[1] - adat[0])
n = len(adat)
also = 0
felso = 1
for i in range(1,n-1):
    if abs(adat[i+1]-adat[i]) < min:
        min = abs(adat[i+1]-adat[i])
        also = i
        felso = i + 1
print("A legkisebb különbség abszolút értékben: ", min)
print("Ez a szám a ", adat[also]," és ", adat[felso]," különbsége.")
#########################################

3. Írjunk egy programot, mely egy paraméterként kapott összegről eldönti, hogy a különböző címletből/érméből (5, 10, 20, 50, 100, 200, 500, 1000) hány darab szükséges ahhoz, hogy összértékük annyi legyen, mint a beolvasott érték, de a lehető legkevesebb érmét/címletet használjunk fel ehhez!
A megoldás:
osszeg = int(input("Kérem a címletezendő összeget!"))
cimlet = [1000, 500, 200, 100, 50, 20, 10, 5]
i = 0
while i <= 5:
    k = osszeg // cimlet[i]
    print(k," db", cimlet[i])
    osszeg = osszeg % cimlet[i]
    i += 1
########################################

4.  Írjunk egy programot, mely egy ax2+bx+c=0 alakú másodfokú egyenletnek meghatározza a megoldását
az a, b és c tényezők (együtthatók) ismeretében!

A megoldás:
import math  #behívjuk a matematika eszközkészletet, amiben megtalálható - többek között - a négyzetgyök függvény is
a = int(input("Kérem az <a> együttható értékét!"))
b = int(input("Kérem a <b> együttható értékét!"))
c = int(input("Kérem a <c> együttható értékét!"))
if a == 0 and b == 0 and c == 0:
    print("Minden valós szám megoldás.")
if a == 0 and b == 0 and c != 0:
    print("Nincs megoldás.")
if a == 0 and b != 0:
    print("Az egyenlet elsőfokú, megoldása: ", -c/b)
if a != 0:
    d = b * b - 4 * a * c
    if d < 0:
        print("Nincs valós megoldás.")
    elif d == 0:
        print("Az egyenlet másodokú, két egybeeső valós gyöke van. Ezek: x1 = x2 = {0}".format(-b/(2*a)))
    else:
        x1 = (-b+math.sqrt(d))/(2*a)
        x2 = (-b-math.sqrt(d))/(2*a)
        print("Az egyenlet másodfokú és két különböző valós gyöke van. Ezek: x1 = {0}, x2 = {1}".format(x1, x2))

0

10

Nyolcadik alkalom (február 06.)
(elmaradt)
Megjegyzés: a következő alkalommal, 2019. február 13-án, a fájlkezelésről lesz szó a Pythonban.
Alapvető ismeret! Aki ezt nem tudja, nem is érdemes az emelt szintű érettségire gondolnia!

0

11

Kilencedik alkalom (2019. február 13.)

Tegyük fel, hogy egy "forras.txt" nevű szöveges állományban találhatók a feldolgozandó adatok, amiket be kell tölteni egy listába (neve: adatok).
Legyen a forrásprogram és a szöveges állomány ugyanabban a könyvtárban. A logikai fájlnév legyen f. Íme a program eleje:

adat = []   //egy üres lista létrehozása adat néven
f = open('forras.txt', 'r')   // megnyitjuk a forras.txt állományt olvasásra ('r') és egymáshoz rendeljük az f logikai fájlnevet a forras.txt nevű fizikai fájllal.
//A következő lépésben sorról sorra beolvassuk az adatokat az adat nevű listába.
for sor in f:
   sor = sor.strip().split()   //a strip() hatására leszedi a sorvége jeleket, a split() hatására széttördeli a szóközöknél a beolvasott sort és egy listába szervezi
   adat.append(sor)   //hozzáfűzzük az adat nevű listához a sor-t.
//1. Határozzuk meg, hogy hány eleme van az adat nevű listának!
n = len(adat)   //a len függvény megadja, hogy a zárójelben szereplő objektumnak hány eleme van
print("A listának {0} darab eleme van.".format(n))

folytatása következik...

0

12

Tizedik alkalom (2019. február 21.)

(elmaradt, mivel órarendváltozás történt)

A következő alkalom: 2019. február 28. (csütörtök, 8. óra, 14:35-től 15:30-ig)

0

13

Tizenegyedik alkalom (2019. február 28., csütörtök)

A mai szakkörön folytattuk a ár korábban elkezdett, 2013. évi, tavaszi, emelt szintű informatika érettségi programozás feladatainak (Választás) megoldását.
Íme a megoldandó feladatok leírása és minden feladat után az általunk kiötölt megoldás Pythonban:
Választások
Eszem-iszom városában időközi   választásokat írtak ki. A városban összesen 12 345 szavazásra jogosult állampolgár van, akiket nyolc választókerületbe soroltak. Minden választókerületben több jelölt is indul, de egy jelölt csak egy választókerületben indulhat. Egy választókerület szavazói az adott választókerületben induló jelöltek közül egy jelöltre adhatnak le szavazatot, de nem kötelező részt venniük a szavazáson. Minden választókerületben az a jelölt nyer, aki a legtöbb szavazatot kapja. (Feltételezheti, hogy egyetlen választókerületben sem alakult ki holtverseny.) A jelöltek vagy egy párt támogatásával, vagy független jelöltként indulhatnak. Az idei évben a Gyümölcsevők Pártja (GYEP), a Húsevők Pártja (HEP), a Tejivók Szövetsége (TISZ) vagy a Zöldségevők Pártja (ZEP) támogatja a jelölteket. A szavazás eredményét a szavazatok.txt szóközökkel tagolt fájl tartalmazza, amelynek minden sorában egy-egy képviselőjelölt adatai láthatók.
Például: 8 149 Zeller Zelma ZEP 6 63 Zsoldos Zsolt - Az első két adat a választókerület sorszáma és a képviselőjelöltre leadott szavazatok száma. Ezt a jelölt vezeték- és utóneve, majd a jelöltet támogató párt hivatalos rövidítése követi. Független jelöltek esetében a párt rövidítése helyett egy kötőjel szerepel. Minden képviselőjelöltnek pontosan egy utóneve van. Készítsen programot valasztas néven, amely az alábbi kérdésekre válaszol! Minden részfeladat feldolgozása során írja ki a képernyőre a részfeladat sorszámát, (például: 2. feladat)! Ahol a felhasználótól kér be adatot, ott írja ki a képernyőre azt is, hogy milyen adatot vár! Az ékezetmentes kiírás is elfogadott.
1. Olvassa be a szavazatok.txt fájl adatait, majd ezek felhasználásával oldja meg a következő feladatokat! Az adatfájlban legfeljebb 100 képviselőjelölt adatai szerepelnek.
print ("1. feladat: Adatok beolvasása fájlból.")
adatok = [] #ebbe, az adatok nevű listába fogjuk beolvasni az adatokat
f = open('szavazatok.txt', 'r')     #logikai és fizikai fájl egymáshoz rendelése, fizikai fájl megnyitása
for sor in f:                       #a fizikai fájl beolvasása soronként
    sor = sor.strip().split()       #a sorvége jel leszedése strip(), majd a szóközöknél a sor szétdarabolása sztringekbe split()
    adatok.append(sor)              #a sor, mint al-lista hozzáfűzése az adatok nevű listához
print(adatok)
f.close()       #fájl lezárása
####################################################################
2. Hány képviselőjelölt indult a helyhatósági választáson? A kérdésre egész mondatban válaszoljon az alábbi mintához hasonlóan: A helyhatósági választáson 92 képviselőjelölt indult.
print ("2. feladat: hány jelölt indult?")
n = len(adatok)
print("A helyhatósági választáson ",n, "képviselőjelölt indult.")
####################################################################
3. Kérje be egy képviselőjelölt vezetéknevét és utónevét, majd írja ki a képernyőre, hogy az illető hány szavazatot kapott! Ha a beolvasott név nem szerepel a nyilvántartásban, úgy jelenjen meg a képernyőn az „Ilyen nevű képviselőjelölt nem szerepel a nyilvántartásban!” figyelmeztetés! A feladat megoldása során feltételezheti, hogy nem indult két azonos nevű képviselőjelölt a választáson.
print("3. feladat: hány szavazatot kapott a képviselőjelölt?")
veznev = input("Kérem a jelölt vezetéknevét!")
kernev = input("Kérem a jelölt keresztnevét!")
i = 0 #indexelés, a lista első eleme a nulladik elem
while (i <=n-1):
    if ((veznev == adatok[i][2]) and (kernev == adatok[i][3])):
        print("A jelöltre adott szavazatok száma: ",adatok[i][1])
        break
    else:
        i+=1
van = (i<=n-1) #n értékét már hamarabb meghatároztuk, a 2. feladatban
if not van:
    print("Ilyen nevű képviselőjelölt nem szerepel a nyilvántartásban!")
###################################################################
A 3. feladat javított változata:
print("3. feladat: javított, a break ugró utasítás nélkül")
veznev = input("Kérem a jelölt vezetéknevét!")
kernev = input("Kérem a jelölt keresztnevét!")
i = 0
while (i <= n-1) and not((veznev == adatok[i][2]) and (kernev == adatok[i][3])):
    i += 1
van = (i <= n-1)
if van:
    print("A jelöltre adott szavazatok száma: ",adatok[i][1])
else:
    print("Ilyen nevű képviselőjelölt nem szerepel a nyilvántartásban!")
###################################################################
4. Határozza meg, hányan adták le szavazatukat, és mennyi volt a részvételi arány! (A részvételi arány azt adja meg, hogy a jogosultak hány százaléka vett részt a szavazáson.) A részvételi arányt két tizedesjegy pontossággal, százalékos formában írja ki a képernyőre! Például: A választáson 5001 állampolgár, a jogosultak 40,51%-a vett részt.
print("4. feladat:  hányan adták le a szavazatukat, és mennyi volt a részvételi arány?")
s = 0
m = 12345   #a szavazásra jogosultak száma
for adat in adatok:
    s = s + int(adat[1])
print("A választáson {0} állampolgár, a jogosultak {1} %-a vett részt".format(s, round(100*s/m,2)))
###################################################################
5. Határozza meg és írassa ki a képernyőre az egyes pártokra leadott szavazatok arányát az összes leadott szavazathoz képest két tizedesjegy pontossággal! A független jelölteket együtt, „Független jelöltek” néven szerepeltesse! Például: Zöldségevők Pártja= 12,34% Független jelöltek= 23,40%
print("5. feladat:  A pártokra leadott szavazatok aránya")
gyep, hep, tisz, zep, ftlen = 0, 0, 0, 0, 0
for adat5 in adatok:
    if adat5[4] == 'GYEP':
        gyep += int(adat5[1])
    elif adat5[4] == 'HEP':
        hep += int(adat5[1])
    elif adat5[4] == 'TISZ':
        tisz += int(adat5[1])
    elif adat5[4] == 'ZEP':
        zep += int(adat5[1])
    else:
        ftlen += int(adat5[1])
print("Gyümölcsevők pártja= {0}%".format(round(gyep/s*100, 2)))
print("Húsevők pártja= {0}%".format(round(hep/s*100, 2)))
print("Tejivők pártja= {0}%".format(round(tisz/s*100, 2)))
print("Zölségevők pártja= {0}%".format(round(zep/s*100, 2)))
print("Független jelöltek= {0}%".format(round(ftlen/s*100, 2)))
####################################################################
6. Melyik jelölt kapta a legtöbb szavazatot? Jelenítse meg a képernyőn a képviselő vezeték és utónevét, valamint az őt támogató párt rövidítését, vagy azt, hogy független! Ha több ilyen képviselő is van, akkor mindegyik adatai jelenjenek meg!
print("6. feladat: ki kapta a legtöbb szavazatot?")
max = int(adatok[0][1])
for i in range(1, n-1):
    if int(adatok[i][1]) > max:
        max = int(adatok[i][1])
for adat in adatok:
    if int(adat[1]) == max:
        if adat[4] == '-':
            print(adat[2], adat[3], ' Független')
        else:
            print(adat[2], ' ', adat[3], ' ', adat[4])
####################################################################
Eddig jutottunk el a mai napon. Még egy, a 7. feladat van hátra ebből a feladatsorból. A következő alkalommal fogjuk ezt megoldani.
Ezután a listákkal végezhető műveletekről és a véletlen számok generálásáról, azok alkalmazhatóságáról lesz szó.
See you next Thursday

0

14

Tizenötödik alkalom (2019. március 07., csütörtök)
A mai alkalommal megoldjuk a Választások c. emelt érettségi feladatsor utolsó (7.) feladatát.
Ezt követően a véletlen számokról, azok generálásáról, használatáról lesz szó.
A Választások c. feladatsor 7. feladata így szólt:
Határozza meg, hogy az egyes választókerületekben kik lettek a képviselők! Írja ki a választókerület sorszámát, a győztes vezeték- és utónevét, valamint az őt támogató párt rövidítését, vagy azt, hogy füg-getlen egy-egy szóközzel elválasztva a kepviselok.txt nevű szöveges fájlba! Az adatok a választókerületek száma szerinti sorrendben jelenjenek meg! Minden sorba egy képviselő adatai kerüljenek!
Egy lehetséges megoldás:
print("7. feladat: Választókerületenként a képviselők")
g = open('kepviselok.txt', 'w')      #a 'kepviselok.txt' fájlba lesznek kiírva a képviselők választókerületenként
for i in range(1, 9):
    max7 = 0
    for sor7 in adatok:
        if int(sor7[0]) == i:
            if int(sor7[1]) > max7:
                   veznev = sor7[2]
                   kernev = sor7[3]
                   part = sor7[4]
                   max7 = int(sor7[1])
    if part == '-':
        sorom = str(i)+' '+veznev + ' ' +kernev+' '+' független'+'\n'
    else:
        sorom = str(i)+' '+veznev + ' ' + kernev+ ' '+part+'\n'
    g.write(sorom)
g.close()

###################################################################

2. Pythonban a véletlen számokról
Modulok
A Python véletlenszám-generátora, illetve a hozzá kapcsolódó utasítások egy külön modulban kapott helyet. A modult (minden modult, nem csak ezt) úgy képzeld el, hogy a program elején betöltjük, és utána a Pythonunk egy rakat újabb utasítást tud. Ezek az utasítások a modulban vannak meghatározva. A modul nem egyéb, mint egy Python-program, amit nem arra terveztek, hogy önmagában futtassuk, hanem arra, hogy más programok kölcsönvehessék az utasításaikat.

A használni kívánt modult a program elején szokás betölteni az import utasítással. Az alábbi programban a véletlenszám-előállítással kapcsolatos modult töltjük be és vesszük használatba:

import random
véletlenszám = random.randint(1, 6)
print(véletlenszám)

Az import random parancs kiadása után már használhatjuk a random modul utasításait (igen, több is van benne). Mindegyik utasítás neve a modul nevével, most ugye random-mal kezdődik, és maga az utasítás egy ponttal kapcsolódik a modul nevéhez. A modul egyik utasítása a randint, ami véletlenszerű egész számot ad vissza, esetünkben 1 és 6 közöttit. (A véletlenszám-generátorok alapesetben 0 és 1 közötti törtet adnak vissza, úgy, hogy a 0 benne lehet, az 1 nem. A randint elvégzi nekünk azt a melót, hogy ebből a számból a megadott határok közötti egészet csinál.)
Példa:
x = random.random()     #egy véletlen számot állít elő 0 és 1 között
Feladat: készítsünk egy számkitalálós programot. A gép 'gondoljon' egy számra, mondjuk 1 és 100 között. Legyen ez x.
Ezt követően próbáljuk eltalálni a gondolt számot, azon segítség mellett, hogy a program megmondja, hogy a gondolt számnál kisebb vagy nagyobb számot írtunk be. A lépések számát is figyeljük. Ha jól játszunk, a 7. próbálkozásra meg kell tudni mondani a gondolt számot. Íme a program:
####################################################
import random
ah = 1      #alsó határ
fh = 100    #felső határ
x = random.randint(ah, fh)
lsz = 7     #a lépések száma. Ezen belüli találat esetén dicsérünk (Ügyes vagy!)
y = int(input('Kérem a számot!'))
while lsz > 0 and x != y:
    if y < x:
        print("Nagyobb!")
    else:
        print("Kisebb")
    lsz -= 1
    y = int(input('Kérem a számot!'))
if lsz <= 0:
    print("Ügyetlen vagy!")
else:
    print("Ügyes vagy")

########################################################

megjegyzés: a következő alkalommal a halmazokról, halmazok megadásáról és a halmazműveletekről lesz szó a Pythonban.

0


You are here » Python programozás » Test forum » Test topic