Informatika2-2014/Gyakorlat02

A MathWikiből
(Változatok közti eltérés)
 
(egy szerkesztő 13 közbeeső változata nincs mutatva)
44. sor: 44. sor:
 
>>> A ^ B
 
>>> A ^ B
 
set([1, 4])
 
set([1, 4])
</python>  
+
</python>
 +
 
 +
=== Szöveg ===
 +
* Erről majd lesz részletesebben szó előadáson.
 +
* Itt néhány olyan metódus szerepel, amit a gyakorlaton használunk
 +
<python>
 +
>>> A='abcdefgh'
 +
>>> A.replace('a','x')
 +
'xbcdefgh'
 +
>>> A='abc dce'
 +
>>> L = A.split(" ")
 +
>>> L
 +
['abc', 'dce']
 +
>>> A = 'AbCdEf'
 +
>>> A.lower()
 +
'abcdef'
 +
</python>
 +
* [http://docs.python.org/2/library/string.html#string-functions]
 
=== Input, Output ===
 
=== Input, Output ===
  
103. sor: 120. sor:
 
</python>
 
</python>
 
== Feladatok ==
 
== Feladatok ==
=== ===
+
=== Eloszlásfüggvény ===
 +
* [https://dl.dropboxusercontent.com/u/1100162/adat.txt adat.txt]
 +
* Írj függvényt, mely megszámolja egy paraméterként kapott listában az egyes elemek gyakoriságát. A végeredményt egy szótárban menti el, melyet visszatérési értékként ad vissza.
 +
* Például
 +
<python>
 +
[1,1,2,1]
 +
</python>
 +
listára a visszatérési érték:
 +
<python>
 +
{1:3,2:1}
 +
</python>
 +
* Írj programot, mely beolvas egy egyoszlopos file-t, és kiszámítja az oszlopban szereplő egész számok eloszlásfüggvényét.
 +
* A program az eredményt írja ki egy két oszlopos file-ba
 +
* Egészítsd ki a programot úgy, hogy kiszámolja a mintában található értékek
 +
** Átlagát
 +
** Maximumát
 +
** Minimumát
 +
* Ezeket az értékeket a program egyszerű "print" paranccsal írja ki a felhasználónak.
 +
* Jelenítsd meg a kapott eloszlásokat gnuplot programban (részletek órán).
 +
* Változtasd meg a programot úgy. hogy tetszőleges valós számokon számoljon gyakoriságot (részletek órán).
 +
=== Szavak gyakorisága ===
 +
* Számold meg egy szöveges fájlban az egyes szavak gyakoriságát.
 +
* Ügyelj arra, hogy egy beolvasott sor végéről töröld le a sorvége karaktert:
 +
<python>
 +
line = line.rstrip("\n")
 +
</python>
 +
* A sorokban space mentén tördeld a szavakat.
 +
* Ne különböztesd meg a kis és nagybetűket a szavakban.
 +
* Egészítsd ki a programot úgy, hogy kiírja a top K szót a szövegben (ahol K paraméter).
 +
=== Vásárlók ===
 +
* Írj programot, mely vásárlésok között keresi meg a két leginkább azonosat.
 +
* A program bemenete egy olyan file, melyben soronként vannak felsorolva különböző vásárálások. Például:
 +
<text>
 +
kenyér paradicsom joghurt
 +
tej tejföl hagyma
 +
kenyér hagyma
 +
...
 +
</text>
 +
* A program olvassa be a file minden egyes sorát.
 +
* A beolvasás után páronként vizsgálja meg a vásárlásokat.
 +
* A hasonlóságot Jaccard-hasonlóság alapján számoljátok (használjatok halmazokat!)

A lap jelenlegi, 2014. február 18., 12:45-kori változata

Tartalomjegyzék

Elmélet

Adattípusok

  • None
  • numerikus
  • egész
  • lebegőpontos
  • (complex)
  • long
  • boolean
  • string
  • tuple
  x = (1,2,3,4)
  • lista
  x = [1, 2, 3, 4]
  x.append(5)
  len(x)
  x[1] = x[2]
  • szótár
A = {}
phonebook = {'Andrew Parson':8806336, 'Emily Everett':6784346, 'Peter Power':7658344, 'Lewis Lame':1122345}
for key in phonebook:
  ...
if key in phonebook:
  print phonebook[key]
...
  • (halmaz)
>>> A=set([1,2,3])
>>> B=set([2,3,4])
>>> A | B
set([1, 2, 3, 4])
>>> A & B
set([2, 3])
>>> A - B
set([1])
>>> A ^ B
set([1, 4])

Szöveg

  • Erről majd lesz részletesebben szó előadáson.
  • Itt néhány olyan metódus szerepel, amit a gyakorlaton használunk
>>> A='abcdefgh'
>>> A.replace('a','x')
'xbcdefgh'
>>> A='abc dce'
>>> L = A.split(" ")
>>> L
['abc', 'dce']
>>> A = 'AbCdEf'
>>> A.lower()
'abcdef'

Input, Output

  • print
  • str() - string-et csinál más típusú objektumból, print valtozo és print str(valtozo) ekvivalens
  • input() - Kiírja a neki adott string-et, és vár egy bementet, a visszatérési értéke a bemenet automatikusan értelmezve, pl:
m = input("Magassag centimeterben:")
print "Magassag meterben:", m / 100.0
  • raw_input() - Kiírja a neki adott string-et, és vár egy bementet, a visszatérési értéke a bemenet stringként, pl:
n = raw_input("Neved:")
print "Hello", n

File I/O

  • open(file_neve, megnyitasai_mod) - megnyit egy file-t, elsõ paramétere a file neve, második a megnyitási mód: 'w', 'a', 'r' a szokásosak. Pl:
f = open('test.txt', 'w')
  • write() - metódusa a file objektumoknak (az elõzõ példában f file objektum), a neki adott string-et a file-ba írja. Pl:
f.write("Which witch watches which witch's watches?\nKovetkezo sor\n")
  • read() - metódusa a file objektumoknak, beolvassa az egész file-t egy (potenciálisan) jó nagy string-be. Pl:
f = open('test.txt', 'r')
s = f.read()
print s
  • readline() - metódusa a file objektumoknak, beolvas egy sort a file-ból, az újsor jelet is beolvassa, az üres sorokat '\n'-ként olvassa be. Ha a file végére ért üres sort olvas be. Pl:
line = f.readline()
print line
  • readlines() - metódusa a file objektumoknak, beolvassa az összes sort mint listát. Pl:
lines = f.readlines()
for line in lines:
    print line
  • A file objektumok iterálhatóak, azaz az elõzõ példa ekvivalens ezzel:
for line in f:
    print line
  • close() - metódusa a file objektumoknak, bezárja a file-t. Pl:
f.close()

Feladatok

Eloszlásfüggvény

  • adat.txt
  • Írj függvényt, mely megszámolja egy paraméterként kapott listában az egyes elemek gyakoriságát. A végeredményt egy szótárban menti el, melyet visszatérési értékként ad vissza.
  • Például
[1,1,2,1]

listára a visszatérési érték:

{1:3,2:1}
  • Írj programot, mely beolvas egy egyoszlopos file-t, és kiszámítja az oszlopban szereplő egész számok eloszlásfüggvényét.
  • A program az eredményt írja ki egy két oszlopos file-ba
  • Egészítsd ki a programot úgy, hogy kiszámolja a mintában található értékek
    • Átlagát
    • Maximumát
    • Minimumát
  • Ezeket az értékeket a program egyszerű "print" paranccsal írja ki a felhasználónak.
  • Jelenítsd meg a kapott eloszlásokat gnuplot programban (részletek órán).
  • Változtasd meg a programot úgy. hogy tetszőleges valós számokon számoljon gyakoriságot (részletek órán).

Szavak gyakorisága

  • Számold meg egy szöveges fájlban az egyes szavak gyakoriságát.
  • Ügyelj arra, hogy egy beolvasott sor végéről töröld le a sorvége karaktert:
line = line.rstrip("\n")
  • A sorokban space mentén tördeld a szavakat.
  • Ne különböztesd meg a kis és nagybetűket a szavakban.
  • Egészítsd ki a programot úgy, hogy kiírja a top K szót a szövegben (ahol K paraméter).

Vásárlók

  • Írj programot, mely vásárlésok között keresi meg a két leginkább azonosat.
  • A program bemenete egy olyan file, melyben soronként vannak felsorolva különböző vásárálások. Például:
kenyér paradicsom joghurt
tej tejföl hagyma
kenyér hagyma
...
  • A program olvassa be a file minden egyes sorát.
  • A beolvasás után páronként vizsgálja meg a vásárlásokat.
  • A hasonlóságot Jaccard-hasonlóság alapján számoljátok (használjatok halmazokat!)
Személyes eszközök