Fizika, matek, informatika érettségi

Home Fizika Excel Access A weboldalról

49. Egyes sorok tárolása

4. szint

A melyseg.txt adatfájl első két sorában az adatokat tartalmazó táblázat sorainak, majd oszlopainak száma található. A fájlban ezt követően táblázatszerűen számok vannak, amelyeket szóköz választ el egymástól (a fájlban a sorok és oszlopok azonosítói nem szerepelnek). Például egy 42 sorból és 25 oszlopból álló táblázat esetén az első 4 sor adatai a fájlban:
42
25
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 3 0 0 0 0 0 8 10 10 0 0 0 0 0 0 0 0 0 0 0

Olvasd be és tárold el a melyseg.txt állomány adatait, és annak felhasználásával válaszolj a következő kérdésekre a minta alapján:
  1. A táblázatban hány darab 0 van?
  2. Melyik a legnagyobb szám a táblázatban, és ez hányadik sor hányadik oszlopában található? Ha több ilyen is van, akkor mindegyiket írasd ki, külön sorban!
  3. Határozd meg a táblázatban található számok átlagát, de a 0 elemeket ne vedd figyelembe az átlagszámításkor!
Letöltés: melyseg.txt

Minta:
a) A táblázatban 404 nulla van.
b) A legnagyobb szám: 98
sor, 20. oszlop
sor, 11. oszlop
sor, 16. oszlop
c) A számok átlaga 42.8



fajl = open('melyseg.txt')
forras = fajl.read().splitlines()
fajl.close()
adatok = [forras[i1].split(' ') for i1 in range(2,len(forras))] # csak a 3. sortól kell az adatokat tárolni

nullak = 0
for adat in adatok:
nullak += adat.count('0')
#print(adat,adat.count('0'),nullak) # teszteléskor jól jön egy ilyen kiíratás
print('a) A táblázatban',nullak,'nulla van.')
maxmelysegek = [] # az egyes sorok maximális mélységeit kigyűjtjük
for adat in adatok:
maxmelysegek.append(max([int(szam) for szam in adat]))
legnagyobb = max(maxmelysegek) # ez a legnagyobb mélység
print('b) A legnagyobb szám:',legnagyobb)

for sorindex in range(len(adatok)):
adat = adatok[sorindex]
for oszlopindex in range(len(adat)):
if int(adatok[sorindex][oszlopindex]) == legnagyobb:
print(str(sorindex+1)+'. sor, '+str(oszlopindex+1)+'. oszlop')

szamok = []
for adat in adatok:
for szam in adat:
if szam != '0':
szamok.append(int(szam))
print('c) A számok átlaga',round(sum(szamok)/len(szamok),1))