Advertisement
Guest User

tesztverseny

a guest
Jan 4th, 2020
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.71 KB | None | 0 0
  1. ##1. Olvassa be és tárolja el a valaszok.txt szöveges állomány adatait!
  2. print('1. feladat: Az adatok beolvasása')
  3. forras = open('valaszok.txt',encoding='windows-1250')
  4. lista= []
  5. for i in forras:
  6.     sor = i.strip().split(' ')
  7.     lista.append(sor)
  8. forras.close()
  9. #print(lista)
  10. print()    
  11. ##2. Jelenítse meg a képernyőn a mintának megfelelően, hogy hány versenyző vett részt
  12. ##    a tesztversenyen!
  13. print('2. feladat: A vetélkedőn',len(lista)-1,'versenyző indult.')
  14. print()
  15. ##3. Kérje be egy versenyző azonosítóját, és jelenítse meg a mintának megfelelően a hozzá
  16. ##    eltárolt válaszokat! Feltételezheti, hogy a fájlban létező azonosítót adnak meg.
  17. def keres(azonosito,lista):
  18.     for i in range(len(lista)):
  19.         if lista[i][0] == azonosito:
  20.             return lista[i][1]
  21. adat = input('3. feladat: A versenyző azonosítója = ')            
  22. #print('3. feladat: A versenyző azonosítója =',adat)
  23. valasz = keres(adat,lista)
  24. kulcs = str(lista[0][0])
  25. print(keres(adat,lista),'(a versenyző válasza)')
  26. print()
  27. ##4. Írassa ki a képernyőre a helyes megoldást! A helyes megoldás alatti sorba „+” jelet tegyen,
  28. ##    ha az adott feladatot az előző feladatban kiválasztott versenyző eltalálta, egyébként egy
  29. ##    szóközt! A kiírást a mintának megfelelő módon alakítsa ki!
  30. print('4. feladat:')
  31. print(lista[0][0],'(a helyes megoldás)')
  32. #print(kulcs)
  33. #print(valasz)
  34. for j in range(len(kulcs)):
  35.     if kulcs[j] == valasz[j]:
  36.         print('+',end='')
  37.     else:
  38.         print(' ',end='')
  39. print(' (a versenyző helyes válaszai)')
  40. print()
  41. ##5. Kérje be egy feladat sorszámát, majd határozza meg, hogy hány versenyző adott a feladatra
  42. ##    helyes megoldást, és ez a versenyzők hány százaléka! A százalékos eredményt a mintának
  43. ##    megfelelően, két tizedesjeggyel írassa ki!
  44. def megoldas(sorszam,lista):
  45.     szamol = 0
  46.     for i in range(1,len(lista)):
  47.         if lista[i][1][sorszam-1] == lista[0][0][sorszam-1]:
  48.             szamol += 1
  49.         else:
  50.             szamol += 0
  51.     return szamol
  52. melyik = int(input('5. feladat: A feladat sorszáma = '))
  53. #print('5. feladat: A feladat sorszáma =',melyik)
  54. print('A feladatra ',megoldas(melyik,lista),' fő, a versenyzők ',round(megoldas(melyik,lista)/(len(lista)-1)*100,2),\
  55.       '%-a adott helyes \nválaszt.',sep='')
  56. print()    
  57. ##6. A verseny feladatai nem egyenlő nehézségűek: az 1-5. feladat 3 pontot, a 6-10. feladat
  58. ##    4 pontot, a 11-13. feladat 5 pontot, míg a 14. feladat 6 pontot ér. Határozza meg az egyes
  59. ##    versenyzők pontszámát, és a listát írassa ki a pontok.txt nevű állományba! Az állomány
  60. ##    minden sora egy versenyző kódját, majd szóközzel elválasztva az általa elért pontszámot
  61. ##    tartalmazza!
  62.  
  63. def pontszam(azonosito,lista):
  64.     szamol = 0
  65.     for i in range(1,len(lista)):
  66.         if lista[i][0] == azonosito:
  67.             for j in range(len(lista[i][1])):
  68.                 if j in [0,1,2,3,4] and lista[i][1][j] == lista[0][0][j]:
  69.                     szamol +=3
  70.                 elif j in [5,6,7,8,9] and lista[i][1][j] == lista[0][0][j]:
  71.                     szamol +=4
  72.                 elif j in [10,11,12] and lista[i][1][j] == lista[0][0][j]:
  73.                     szamol +=5
  74.                 elif j in [13] and lista[i][1][j] == lista[0][0][j]:
  75.                     szamol +=6
  76.         else:
  77.             szamol += 0
  78.     return szamol
  79.  
  80. #print(pontszam('EM426',lista))
  81. print('6. feladat: A versenyzők pontszámának meghatározása')
  82. celfajl = open('pontok.txt','w',encoding='windows-1250')
  83. for i in range(1,len(lista)):
  84.     eredmeny = pontszam(lista[i][0],lista)
  85.     print(lista[i][0],eredmeny,file=celfajl)
  86. celfajl.close()
  87. print()
  88. ##7. A versenyen a három legmagasabb pontszámot elérő összes versenyzőt díjazzák. Például 5
  89. ##    indulónál előfordulhat, hogy 3 első és 2 második díjat adnak ki. Így megtörténhet az is,
  90. ##    hogy nem kerül sor mindegyik díj kiadására. Írassa ki a mintának megfelelően a képernyőre
  91. ##    a díjazottak kódját és pontszámát pontszám szerint csökkenő sorrendben!
  92.  
  93. print('7. feladat: A verseny legjobbjai:')
  94. pontszamok = []
  95. forrasfajl = open('pontok.txt',encoding='windows-1250')
  96. for i in forrasfajl:
  97.     sor = i.strip().split()
  98.     sor[1] = int(sor[1])
  99.     pontszamok.append(sor)
  100. forrasfajl.close()
  101. #print(pontszamok)
  102. halmaz = set()
  103. for x in range(len(pontszamok)):
  104.     halmaz.add(pontszamok[x][1])
  105. halmaz = sorted(list(halmaz),reverse = True)
  106. #print(halmaz)
  107. for y in halmaz:
  108.     for z in range(len(pontszamok)):
  109.         if pontszamok[z][1] == y and halmaz.index(y)+1 <= 3:
  110.             print(halmaz.index(y)+1,'. díj (',y,' pont): ',pontszamok[z][0],sep='')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement