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:
A táblázatban hány darab 0 van?
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!
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!
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))