Gyakorlat2

A MathWikiből
(Változatok közti eltérés)
29. sor: 29. sor:
 
=== Pár sorosak ===
 
=== Pár sorosak ===
  
Ezeknél a feladatoknál többnyire elég a show_match függvényt használni, de nem kötelezõ. A példa bemenetek soronként értendõk, nem mint egy nagy bemenet.
+
Ezeknél a feladatoknál többnyire elég a show_match függvényt használni, de nem kötelezõ. A példa bemenetek soronként értendõk, nem mint egy nagy bemenet. Mindig az elsõ találatot kell csak megtalálni a sorban.
  
 
* Írj reguláris kifejezést, ami illeszkedik a "kutya" szóra.
 
* Írj reguláris kifejezést, ami illeszkedik a "kutya" szóra.
39. sor: 39. sor:
 
  gyakran hozott esot 54343 a Sareer peremen.
 
  gyakran hozott esot 54343 a Sareer peremen.
  
* Írj egy reguláris kifejezést, ami illeszkedik bármilyen számra, legyen az egész, tizedestört, vagy két szám hányadosaként felírt racionális! (Mindig az elsõ számot találja meg a sorban.)
+
* Írj egy reguláris kifejezést, ami illeszkedik bármilyen számra, legyen az egész, tizedestört, vagy két szám hányadosaként felírt racionális!
 
  A bosi zsilip 22547645 hibaja miatt akadozik a budapesti hajokozlekedes
 
  A bosi zsilip 22547645 hibaja miatt akadozik a budapesti hajokozlekedes
 
  546.433 eve nem oltek amerikai nagykovetet
 
  546.433 eve nem oltek amerikai nagykovetet
58. sor: 58. sor:
 
  vOlt eGySzeR 42 kiskUTYa, eLMENTeK negYvenKEt vasArBA. oTt TaLaLKOZtAk 43 FARkasSAl, akIKnek Volt NEGyVeNKet HAzikOJUK, es NEgYVenkeTtO kiSkuTYAJUK.
 
  vOlt eGySzeR 42 kiskUTYa, eLMENTeK negYvenKEt vasArBA. oTt TaLaLKOZtAk 43 FARkasSAl, akIKnek Volt NEGyVeNKet HAzikOJUK, es NEgYVenkeTtO kiSkuTYAJUK.
  
* Az elõzõ feladat példa bemenetét alakítsuk normális szöveggé, azaz mindenhol kisbetûvel legyenek a szavak, kivéve a mondatok elején (mondat eleje a sor elején van és a .-ok után).
+
Bónusz:
 +
* Az elõzõ feladat példa bemenetét alakítsuk normális szöveggé, azaz mindenhol kisbetûvel legyenek a szavak, kivéve a mondatok elején (mondat eleje a sor elején van és a .-ok után). Használhatjátok az str.lower() függvényt, ami visszaadja a beadott stringet mindenhol kisbetûvel, majd ezután kellene megoldani, hogy a mondatok eleje nagybetûs legyen.
  
 
=== Hosszabbak ===
 
=== Hosszabbak ===

A lap 2012. szeptember 13., 02:14-kori változata

Tartalomjegyzék

Bevezetés

  • Ami mindenképpen kelleni fog a python file-od elejére:
import re
  • A függvények amiket használni fogunk a keresésre / átírásra:
re.search("pattern", "string") 
re.match("pattern", "string") 
re.findall("pattern", "string") 
re.sub("pattern", "replace", "string")
  • Ezek egy match objektumot adnak vissza, feltéve hogy a match változóba mentjük, akkor a kövektezõ metódusok használhatók rajta:
match = re.search("i.a", "cica cila")
match.group()
match.group(0)
match.string
  • Ez egy hasznos függvény lehet a próbálgatáshoz:
def show_match(string, pattern):
	match = re.search(pattern, string)
	if match:
		return string[:match.start()] + "<<" + string[match.start():match.end()] + ">>" + string[match.end():]
	else:
		return "no match"

Feladatok

Pár sorosak

Ezeknél a feladatoknál többnyire elég a show_match függvényt használni, de nem kötelezõ. A példa bemenetek soronként értendõk, nem mint egy nagy bemenet. Mindig az elsõ találatot kell csak megtalálni a sorban.

  • Írj reguláris kifejezést, ami illeszkedik a "kutya" szóra.
Volt egyszer egy kiskutya, elment a vasarba.
  • Írj reguláris kifejezést, ami illeszkedik bármilyen egybefüggõ számsorozatra (pl: 540548394).
A meleg evszakban, amikor 5456 az idojaras-szabalyzo szatellitaknak
a nagy tengereken 545534tombolo szelekkel kellett megharcolnia, az este 
gyakran hozott esot 54343 a Sareer peremen.
  • Írj egy reguláris kifejezést, ami illeszkedik bármilyen számra, legyen az egész, tizedestört, vagy két szám hányadosaként felírt racionális!
A bosi zsilip 22547645 hibaja miatt akadozik a budapesti hajokozlekedes
546.433 eve nem oltek amerikai nagykovetet
Atadjuk a 65/87 nuklearis tudasunkat Vietnamnak
Monda Lajos 65 a nagy 546.34 kiraly
  • Írj reguláris kifejezést ami illeszkedik telefonszámokra, amik a következõ formátumban vannak: 06##-###-####
Egy Liga nem-hajo semleges teruleten voltak, ami mellett 0623-434-5432 Bene Gesserit- es Tleilax-monitorhajok gyulekeztek, mint ragadozo madarak a zsakmany korul. 
A Liga 0532-323-4344 meghunyaszkodva igyekezett 06-23-545-5432 megbekiteni a Bene Gesseritet.
A kis ovalis 06sa-344-7654 terem, ahol 0643-43-65443 talalkoztak, szokasosan rezfalu es "kembiztos" volt. 
  • Írj reguláris kifejezést, ami e-mail címekre illeszkedik. Azt nem kell ellenõriznie, hogy valós cím lehet-e, viszont azt ellenõrizzük, hogy a karakterek érvényesek legyenek, azaz vagy betû vagy szám, és az utolsó részben (ahol a .hu, meg .com stb van) ne lehessen szám.
Ez legalabb@visszajelzes.volt. 
Scytale megfelelokepp@valaszolt.86, de@feszulten.figyelt kozben.
Nem tetszett.neki a@helyzet. @A.e haz@egy.zsakutca vegeben allt.
  • Írj python scriptet, ami egy sorban kicseréli az összes elõfordulását a 42-nek vagy betûvel írt "negyvenketto"-nek vagy "negyvenket"-nek, 23-ra. Arra vigyázzunk, hogy a negyvenketto es negyvenket bárhogy állhat nagy- és kisbetûkbõl.
vOlt eGySzeR 42 kiskUTYa, eLMENTeK negYvenKEt vasArBA. oTt TaLaLKOZtAk 43 FARkasSAl, akIKnek Volt NEGyVeNKet HAzikOJUK, es NEgYVenkeTtO kiSkuTYAJUK.

Bónusz:

  • Az elõzõ feladat példa bemenetét alakítsuk normális szöveggé, azaz mindenhol kisbetûvel legyenek a szavak, kivéve a mondatok elején (mondat eleje a sor elején van és a .-ok után). Használhatjátok az str.lower() függvényt, ami visszaadja a beadott stringet mindenhol kisbetûvel, majd ezután kellene megoldani, hogy a mondatok eleje nagybetûs legyen.

Hosszabbak

  • Írj python scriptet ami megszámolja hányszor szerepel az "a" és "az" névelõ a szövegben:
A hamisitas elleni kuzdelmet segitheti amerikai kutatok fejlesztese, amelyben nanoreszecskek
es fluoreszcens tinta felhasznalasaval allitottak elo szabad szemmel nem lathato vonalkodokat.
A QR-kodok fekete es feher blokkjai egyre inkabb elterjednek a kereskedelemben, mert szazszor 
tobb informaciot hordoznak a hagyomanyos vonalkodokhoz kepest. A nyomtatott formaban megjeleno
hirdetesekben elhelyezett QR-kodokat okostelefonokkal lehet leolvasni es kozvetlenul a hirdeto
ceg honlapjara iranyitjak az erdeklodot. Kesobb kidolgoztak, hogy csak lezerfenyben legyen
lathato a QR-kod nyomtatasahoz alkalmazott tinta, igy a bankjegyhamisitas es mas termekek
hamisitasa elleni kuzdelemben is bevetheto a modszer.
A Del-Dakotai Egyetem es a Del-Dakotai Banyaszati es Muszaki Egyetem kutatoi az altaluk
kifejlesztett lathatatlan QR-kodhoz fluoreszcens tintaba kevert nanometeres meretu (a nanometer
a millimeter milliomod resze) reszecskeket hasznaltak. Az igy keszult kod csak akkor latszik, ha
infravoroshoz kozeli hullamhosszu lezerrel vilagitjak meg a feluletet. Az adott hullamhosszon a
nanoreszecskek kepesek elnyelni, abszorbealni a fotonokat, majd rovidebb, lathato hullamhosszon
kibocsatjak oket.
A kod, amikor megvilagitjak a lezerrel, mobiltelefonnal leolvashato es nagyobb biztonsagot nyujt
a korabbi eljarasnal, mert egeszen apro, csak mikroszkop alatt lathato reszleteket lehet
elrejteni benne az uj technika segitsegevel. Tovabbi elonye, hogy a lathatatlan kod meg akkor is
leolvashato, ha a hordozo papirt sokszor osszegyurtek. Raadasul papiron kivul mas anyagra is
nyomtathato, peldaul uvegre vagy muanyag filmre, ezert szamos kulonbozo teruleten hasznalhatjak
a hamisitas elleni vedekezesre. Az uj technologiat a Nanotechnology cimu szakfolyoiratban
ismertette Jeevan Meruga kutatasvezeto es csoportja.
  • Írj python scriptet, ami kiírja az összes mondatot amiben szerepel a nano szó (bárhogy lehet nagy- és kisbetûkkel). A mondatok sor elejétõl .-ig, vagy .-tól .-ig terjednek.
A hamisitas elleni kuzdelmet segitheti amerikai kutatok fejlesztese, amelyben nanoreszecskek es fluoreszcens tinta felhasznalasaval allitottak elo szabad szemmel nem lathato vonalkodokat.
A QR-kodok fekete es feher blokkjai egyre inkabb elterjednek a kereskedelemben, mert szazszor tobb informaciot hordoznak a hagyomanyos vonalkodokhoz kepest. A nyomtatott formaban megjeleno hirdetesekben elhelyezett QR-kodokat okostelefonokkal lehet leolvasni es kozvetlenul a hirdeto ceg honlapjara iranyitjak az erdeklodot. Kesobb kidolgoztak, hogy csak lezerfenyben legyen lathato a QR-kod nyomtatasahoz alkalmazott tinta, igy a bankjegyhamisitas es mas termekek hamisitasa elleni kuzdelemben is bevetheto a modszer.
A Del-Dakotai Egyetem es a Del-Dakotai Banyaszati es Muszaki Egyetem kutatoi az altaluk kifejlesztett lathatatlan QR-kodhoz fluoreszcens tintaba kevert nanometeres meretu (a nanometer a millimeter milliomod resze) reszecskeket hasznaltak. Az igy keszult kod csak akkor latszik, ha infravoroshoz kozeli hullamhosszu lezerrel vilagitjak meg a feluletet. Az adott hullamhosszon a nanoreszecskek kepesek elnyelni, abszorbealni a fotonokat, majd rovidebb, lathato hullamhosszon kibocsatjak oket.
A kod, amikor megvilagitjak a lezerrel, mobiltelefonnal leolvashato es nagyobb biztonsagot nyujt a korabbi eljarasnal, mert egeszen apro, csak mikroszkop alatt lathato reszleteket lehet elrejteni benne az uj technika segitsegevel. Tovabbi elonye, hogy a lathatatlan kod meg akkor is leolvashato, ha a hordozo papirt sokszor osszegyurtek. Raadasul papiron kivul mas anyagra is nyomtathato, peldaul uvegre vagy muanyag filmre, ezert szamos kulonbozo teruleten hasznalhatjak a hamisitas elleni vedekezesre. Az uj technologiat a Nanotechnology cimu szakfolyoiratban ismertette Jeevan Meruga kutatasvezeto es csoportja.
  • Írd át az elõzõ scriptet függvénnyé (ha még nem az), úgy hogy tetszõleges szóra tudj keresni.

Adat rendezés

  • Töltsd le a következõ file-t: adat.txt
  • Véletlen adatok és szavak vannak benne, a feladat az, hogy soronként kibányásszuk az e-mailcímeket, telefonszámokat, és dátumokat és mindezt tároljuk egy 2 dimenziós listában (listák listája).
  • Az e-mailcímek és telefonszámok a fenti feladatokban már említett módon néznek ki, míg a dátumok 00/00/0000 formátumban vannak.
  • A kimenetet file-ba írni nem feltétlen kell, de az lenne a legszebb megoldás, ha soronként lenne a megtalált e-mailcím majd telefonszám és végül a dátum.
  • A feladathoz olvasnod kell tudni file-ban a python segítségével, ebben a következõ kód segít.
bemenet = open('./adat.txt', 'r')
kimenet = open('./kimenet.txt', 'w')

def fuggveny(s):
	return "valami" + s

for line in bemenet:
	line2 = fuggveny(line)
	kimenet.write(line2)
	
adat.close()
kimenet.close()
  • Parancsonként leírom mi mit csinál a kódban:
bemenet = open('./adat.txt', 'r')
  • Megnyitja a bemenet változóba az adat.txt file-t ami egy mappában van a python scripttel, az 'r' (read) azt mondja meg, hogy olvasni akarunk a file-ban.
kimenet = open('./kimenet.txt', 'w')
  • Mint az elõbb, csak 'w' (write) segítségével írásra nyitjuk meg.
def fuggveny(s):
	return "valami" + s
  • Csak valamilyen függvény ami csinál valamit a bemenetével majd visszaad valamit.
for line in bemenet:
	line2 = fuggveny(line)
	kimenet.write(line2)
  • Végigmegyünk a bemenet sorain (itt a line csak egy változónév, lehetne i is, vagy koafkdofd is akár), és lefuttatjuk a fuggveny-t minden sorra, a kimenetet elmentjuk a line2-be, majd a kimenet file-ba írjuk a line2-t.
adat.close()
kimenet.close()
  • Bezárjuk mindkét file-t, ez azért kell, mert csak azután lehetünk biztosak hogy megtörténtek a file-ba írások miután így bezártuk a file-t.
Személyes eszközök