Fizika, matek, informatika érettségi

Home Fizika Excel Access A weboldalról

46. Tárolás nélkül

4. szint

Ha egy szabályos pénzérmét feldobunk, akkor egyenlő eséllyel lehet fej (F) vagy írás (I) az eredmény. A kiserlet.txt állományban egy pénzfeldobás-sorozat eredménye található. Mivel a sorozat hossza tetszőleges lehet, ezért az összes adat memóriában történő egyidejű eltárolása nélkül kell megoldani a következő feladatokat!

Állapítsd meg, hány dobásból állt a kísérlet, és a választ írasd ki a képernyőre!
A dobások hány százalékában található fej a fájlban? Az eredményt két tizedes jegy pontossággal írasd ki a képernyőre! Hányszor fordult elő ebben a kísérletben, hogy egymás után pontosan két fejet dobtunk?

Letöltés: kiserlet.txt

Minta:
A kísérlet 4321 dobásból állt.
A fej a dobások 51.03%-ában fordult elő.
259 alkalommal volt pontosan két fej egymás után.



dobasok = 0
fajl = open('kiserlet.txt')
for sor in fajl:
dobasok += 1
fajl.close()
print('A kísérlet',dobasok,'dobásból állt.')

fej = 0
fajl = open('kiserlet.txt') # újra meg kell nyitni a fájlt és végig kell menni rajta, csak így működik
for sor in fajl:
if sor.strip() == 'F':
fej += 1
fajl.close()
print('A fej a dobások '+str(round(100*fej/dobasok,'))+'%-ában fordult elő.')

ketfej = 0
minta = '' # ide gyűjtjük az egymás utáni fejeket, amíg írás nem jön
fajl = open('kiserlet.txt')
for sor in fajl:
if sor.strip()=='I': # ha írás jön, akkor megnézzük, hány fej gyűlt össze
if len(minta)==2: # ha pont két fej gyűlt össze, az jó eset
ketfej += 1
minta = '' # írás esetén újrakezdjük a fejek gyűjtését
else:
minta += 'F' # ha nem írás volt, nyilván fej
fajl.close()
print(ketfej,'alkalommal volt pontosan két fej egymás után.')