zfoxatis

2008 emelt szintű számtech érettségi Python 3.1-ben

Jan 22nd, 2012
113
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/python3.1
  2. #-*-coding:utf-8-*-
  3.  
  4. '''
  5. 2008-as emelt szintű számtech érettségi programozás feladata python 3.1-ben
  6. kiinduló prg
  7. '''
  8.  
  9.  
  10. import datetime
  11.  
  12. class SMS:
  13.     def __init__(self,óra,perc,telefonszám,smsszöveg):
  14.         self.idő=datetime.time(eval(óra),eval(perc))
  15.         self.telefonszám=telefonszám
  16.         self.smsszöveg=smsszöveg
  17.     def __repr__(self):
  18.         return '({0.idő},{0.telefonszám},{0.smsszöveg})'.format(self)
  19.     def __str__(self):
  20.         return repr(self)
  21.        
  22.  
  23. class SMSLista:
  24.     def __init__(self,nyerslista):
  25.         self.nyerslista=nyerslista
  26.         self.smsek=[]
  27.         lista=open(self.nyerslista,'r',).readlines()
  28.         i=0
  29.         for sorok in lista[1:len(lista)]:
  30.             i+=1
  31.             if i/2!=int(i/2):
  32.                 óra,perc,telefonszám=sorok.split()
  33.             else:
  34.                 smsszöveg=sorok[:-2]
  35.                 self.smsek.append(SMS(óra,perc,telefonszám,smsszöveg))
  36.         print(self.smsek)
  37.    
  38.     def legutolsó_sms(self):
  39.         sms=self.smsek[0]
  40.         for i in self.smsek:
  41.             if sms.idő<i.idő:
  42.                 sms=i
  43.         self.eredmény_sms('Legutolsó',sms)
  44.  
  45.     def leghosszabb_sms(self):
  46.         sms=self.smsek[0]
  47.         for i in self.smsek:
  48.             if len(sms.smsszöveg)<len(i.smsszöveg):
  49.                 sms=i
  50.         self.eredmény_sms('Leghosszabb',sms)
  51.        
  52.     def legrövidebb_sms(self):
  53.         sms=self.smsek[0]
  54.         for i in self.smsek:
  55.             if len(sms.smsszöveg)>len(i.smsszöveg):
  56.                 sms=i
  57.         self.eredmény_sms('Legrövidebb',sms)
  58.  
  59.     def karakter_hossz_stat(self,mettől,meddig):
  60.         számoló=0
  61.         for i in self.smsek:
  62.             if mettől-1<len(i.smsszöveg) and meddig+1>len(i.smsszöveg):
  63.                 számoló+=1
  64.         print('{0}-{1} := {2}'.format(mettől,meddig,számoló))
  65.  
  66.     def azonos_telefonról_jővő_sms_közti_leghosszabb_idő(self,telefonszám):
  67.         leghosszabb_idő=datetime.time(0,0)
  68.         self.telről_jővő_smsek=[]
  69.         for i in self.smsek:
  70.             if i.telefonszám==telefonszám:
  71.                 self.telről_jővő_smsek.append(i.idő)
  72.         if len(self.telről_jővő_smsek)<2:
  73.             print('\nNincs elegendő üzenet \n')
  74.         else:
  75.             for i in range(1,len(self.telről_jővő_smsek)):
  76.                 aktuális_különbség=self.időkülönbség(self.telről_jővő_smsek[i],self.telről_jővő_smsek[i-1])
  77.                 if leghosszabb_idő<aktuális_különbség:
  78.                     leghosszabb_idő=aktuális_különbség                    
  79.             print('\n{0} volt a leghosszabb idő két sms között ami a {1} telefonszámról jött \n'.format(leghosszabb_idő,telefonszám))
  80.  
  81.     def üzenet_kézi_bevitele(self):
  82.         adatok=('óra: ','perc: ','telefonszám: ','sms szövege: ')
  83.         sms=[]
  84.         for i in adatok:
  85.             sms.append(input(i))
  86.         self.smsek.append(SMS(sms[0],sms[1],sms[2],sms[3]))
  87.  
  88.     def telefonba_nem_férő_üzenetek_száma_óránkénti_megtekintéskor(self):
  89.         eredmény=0
  90.         for i in range(1,24):
  91.             számoló=0
  92.             for j in self.smsek:
  93.                 if j.idő.hour==i:
  94.                     számoló+=1
  95.             if számoló>10:
  96.                 eredmény+=számoló-10
  97.         print('\n{0} sms miatt kellene hívni a szolgáltatót'.format(eredmény))
  98.    
  99.     def sms_csoportosítás_txtbe(self):
  100.         kiírni=open('smski.txt','w')
  101.         telefonszámok=[]
  102.         for i in self.smsek:
  103.             if telefonszámok.count(i.telefonszám)==0:
  104.                 telefonszámok.append(i.telefonszám)
  105.         telefonszámok=sorted(telefonszámok)
  106.         for i in telefonszámok:
  107.             kiírni.write('{0}\n'.format(i))
  108.             for j in self.smsek:
  109.                 if j.telefonszám==i:
  110.                     kiírni.write('  {0} : {1}\n'.format(j.idő,j.smsszöveg))
  111.         kiírni.close()
  112.  
  113.     def időkülönbség(self,idő1,idő2):
  114.         idő_minusz=(idő1.hour*60+idő1.minute)-(idő2.hour*60+idő2.minute)
  115.         idő_minusz_óra=int(idő_minusz/60)
  116.         idő_minusz_perc=(idő_minusz%60)
  117.         return datetime.time(idő_minusz_óra,idő_minusz_perc)
  118.        
  119.     def eredmény_sms(self,szöveg,sms):
  120.         print(szöveg,'SMS érkezési ideje: {0} telefonszáma: {1} üzenete: {2} \n'.format(sms.idő,sms.telefonszám,sms.smsszöveg))
  121.        
  122.  
  123.  
  124. print('\n1.feladat')          
  125. nap=SMSLista('/home/zfoxatis/Dokumentumok/sms.txt')
  126. print('\n2.feladat')
  127. nap.legutolsó_sms()
  128. print('\n3.feladat')
  129. nap.leghosszabb_sms()
  130. nap.legrövidebb_sms()    
  131. print('\n4.feladat')
  132. nap.karakter_hossz_stat(1,20)
  133. nap.karakter_hossz_stat(21,40)
  134. nap.karakter_hossz_stat(41,60)
  135. nap.karakter_hossz_stat(61,80)
  136. nap.karakter_hossz_stat(81,100)
  137. print('\n5.feladat')
  138. nap.telefonba_nem_férő_üzenetek_száma_óránkénti_megtekintéskor()
  139. print('\n6.feladat')
  140. nap.azonos_telefonról_jővő_sms_közti_leghosszabb_idő('123456789')
  141. print('\n7.feladat')
  142. nap.üzenet_kézi_bevitele()
  143. print('\n8.feladat')
  144. nap.sms_csoportosítás_txtbe()
  145.  
  146.  
  147.  
  148.  
  149.  
  150. '''
  151. sms.txt
  152.  
  153. 30
  154. 9 11 123456789
  155. Szia, mikor jossz?
  156. 9 13 434324223
  157. Nem kerek ebedet!
  158. 9 14 434324223
  159. Hova menjek erted?
  160. 9 16 343567452
  161. Nem erek oda idoben. Hivd fel a fonokot es ments ki!
  162. 9 20 123456789
  163. Hozd el a mintas pulcsimat!
  164. 9 21 434324223
  165. NyertĂźnk a palyazaton!
  166. 9 40 434325432
  167. A nyelvvizsgadra mennyi potlekot kapsz? Nekem meg nem fizettek egy fillert sem. :-(
  168. 9 45 434324223
  169. A gep nem bootol be. Aramot kap, de a monitoron nem jelenik meg semmi.
  170. 9 46 434325632
  171. Hova tetted a palyazati urlapot? Mar fel oraja keressuk.
  172. 9 51 545432542
  173. Erdekli Ont egy telefon? A vezetek nelkuli telefon most a legolcsobb!
  174. 9 53 434324223
  175. Elvesztetted a fogadast! :-)
  176. 10 8 123456789
  177. Hol vagy mar olyan sokaig? Varlak!
  178. 10 12 454343545
  179. Add fel postan meg ma a palyazatot!
  180. 10 25 231287556
  181. Tibi megjott, majd hivd fel delben!
  182. 10 44 565643244
  183. Erdekli Ont egy telefon? A vezetek nelkuli telefon most a legolcsobb!
  184. 11 1 545453345
  185. Potyara jottem, az ugyfel nem volt itt.
  186. 11 3 545345345
  187. Erdekli Ont egy telefon? A vezetek nelkuli telefon most a legolcsobb!
  188. 11 4 853556565
  189. Sot, az urge visszalepett.
  190. 11 11 854655455
  191. Hova szallitsam a butort?
  192. 11 13 854655455
  193. Mikor kezdodik a meccs? A jegyet veszed?
  194. 11 14 123456789
  195. Este szinhazba megyunk, ugye tudod?
  196. 11 19 435435345
  197. A megrendelt konyve megerkezett.
  198. 11 21 123456789
  199. Holnap jonnek Agiek!
  200. 11 22 434324223
  201. Utalhatod a penzt a lakasert!
  202. 11 29 654647445
  203. Erdekli Ont egy telefon? A vezetek nelkuli telefon most a legolcsobb!
  204. 11 36 434324223
  205. Kesz a kocsi!
  206. 11 50 434324223
  207. No mi van, akarsz focizni?
  208. 12 3 434324223
  209. Lesz egy londoni ut, erdekel?
  210. 12 44 854655455
  211. Hany napra kersz szallast?
  212. 12 48 123456789
  213. A szinhaz ugrott, csotores van!
  214. '''
RAW Paste Data