Szoktam mondani, hogy az adatszerkezet a lényeg (nem akar rá csinálni valaki valami mémszerűséget?).
Ebben az érettségiben a forrásfájl elején levakarjuk az első beolvasott sort (mert az más jellegű adatot tartalmaz), és ezt szeleteléssel meg egyeléssel tesszük. Amikor ezzel megvagyunk, akkor már megy minden, mint a karikacsapás. A feladat érdekessége egy eléggé alternatív kiválogatás, amikor keressük a helyes találatokat a tesztsorban, de nem magukat a megoldásokat, hanem “+”-jeleket teszünk az új listába.
A feladat, és ami még fontosabb, a forrásfájl letölthető innen.
Haj rá! (Hair on it!)
A videóban látható megoldás forráskódja:
#!/usr/bin/env python3 def feladatsort_pontoz(helyesek, mostaniak): pontszám = 0 for index in range(len(helyesek)): if helyesek[index] == mostaniak[index]: if 0 <= index <= 4: pontszám += 3 elif 5 <= index <= 9: pontszám += 4 elif 10 <= index <= 12: pontszám += 5 elif index == 13: pontszám += 6 return pontszám #1. feladat válaszok = [] forrásfájl = open('valaszok.txt') for sor in forrásfájl: válaszok.append(sor.strip().split()) forrásfájl.close() helyes_válaszok = válaszok[0][0] válaszok = válaszok[1:] print('2. feladat: A vetélkedőn', len(válaszok), 'versenyző indult.') versenyzőazonosító = input('3. feladat: A versenyző azonosítója = ') for bejegyzés in válaszok: if bejegyzés[0] == versenyzőazonosító: versenyző_válaszai = bejegyzés[1] print(versenyző_válaszai, ' (a versenyző válasza)') break print('4. feladat') print(helyes_válaszok, ' (a helyes megoldás)') for index in range(len(versenyző_válaszai)): if versenyző_válaszai[index] == helyes_válaszok[index]: print('+', end='') else: print(' ', end='') print(' (a versenyző helyes válaszai)') feladat_sorszáma = int(input('5. feladat: A feladat sorszáma = ')) feladat_indexe = feladat_sorszáma - 1 számláló = 0 for bejegyzés in válaszok: if bejegyzés[1][feladat_indexe] == helyes_válaszok[feladat_indexe]: számláló += 1 print('A feladatra', számláló, 'fő, a versenyzők', round(számláló/len(válaszok)*100, 2), '%-a adott helyes választ.') #6. feladat pontok = [] for bejegyzés in válaszok: pontok.append([bejegyzés[0], feladatsort_pontoz(helyes_válaszok, bejegyzés[1])]) célfájl = open('pontok.txt', 'w') for sor in pontok: print(sor[0], sor[1], file=célfájl) célfájl.close() print('7. feladat: A verseny legjobbjai:') ponthalmaz = set() for bejegyzés in pontok: ponthalmaz.add(bejegyzés[1]) pontlista = sorted(list(ponthalmaz), reverse = True)[0:3] for pontszám in pontlista: for bejegyzés in pontok: if bejegyzés[1] == pontszám: print(pontlista.index(pontszám)+1, '. (', pontszám, ' pont): ', bejegyzés[0], sep='')
Legutóbb fürödtünk. Legközelebb enumerálunk.
https://pastebin.com/MwgiwaAm Egy kis tákolmány puska nélkül :)) Sikerült jól túlbonyolítani
KedvelésKedvelés
Fogadd örök hálámat mester! Nélküled biztos nem sikerült volna az érettségi programozás, a bolond fejemmel egy hónappal az érettségi előtt nekikezdve 😀 Nagyon jó volt ez a teljes tananyag, barátaimmal/sorstársaimmal is megosztottam, ők is nagyon pozitívan vélekednek a munkádról.
Még egyszer is köszönök mindent, életet mentettél!
KedvelésKedvelés
Óóó, és így lettem életmentő:) Köszönöm az elismerő szavakat!
KedvelésKedvelés