Advertisement
Guest User

Python - Sys_Plik

a guest
Apr 26th, 2015
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.06 KB | None | 0 0
  1. class Katalog:
  2.    
  3.     class Plik:
  4.         class Powtorzona_nazwa(Exception):
  5.             pass
  6.        
  7.         def __init__(self,nazwa,rozmiar,ukryty=False):
  8.             """(Plik,str,int,bool)->NoneType"""
  9.             if rozmiar<0 or type(ukryty) is not bool or type(nazwa) is not str:
  10.                 raise ValueError
  11.             self._nazwa=nazwa
  12.             self._rozmiar=rozmiar
  13.             self._ukryty=ukryty
  14.             self._next=None
  15.        
  16.         def getNazwa(self):
  17.             """(Plik)->str"""
  18.             return self._nazwa
  19.        
  20.         def getRozmiar(self):
  21.             """(Plik)->Int"""
  22.             return self._rozmiar
  23.        
  24.         def getUkryty(self):
  25.             """(Plik)->Bool"""
  26.             return self._ukryty
  27.        
  28.         def setRozmiar(self,rozmiar):
  29.             """(Plik,int)->NoneType"""
  30.             self._rozmiar=rozmiar
  31.        
  32.         def setUkryty(self,ukryty):
  33.             """(Plik,bool)->NoneType"""
  34.             self._ukryty=ukryty
  35.            
  36.         def getNext(self):
  37.             """(Plik)->Plik"""
  38.             return self._next
  39.        
  40.         def setNext(self,next):
  41.             """(Plik,Plik)->NoneType"""
  42.             self._next=next
  43.            
  44.     def __init__(self):
  45.         """(Katalog)->NoneType"""
  46.         self._head=None
  47.         self._size=0
  48.        
  49.     def Dodaj_plik(self,plik):
  50.         """(Katalog,Plik)->NoneType"""
  51.         if self._head is None:
  52.             self._head=plik
  53.             self._size+=1
  54.         else:
  55.             if plik.getNazwa()<self._head.getNazwa():
  56.                 plik.setNext(self._head)
  57.                 self._head=plik
  58.                 self._size+=1
  59.             else:
  60.                 pred=None
  61.                 walker=self._head
  62.                 while walker is not None and walker.getNazwa()<plik.getNazwa():
  63.                     pred=walker
  64.                     walker=walker.getNext()
  65.                 if walker is not None and walker.getNazwa()==plik.getNazwa():
  66.                     raise Katalog.Plik.Powtorzona_nazwa                
  67.                 plik.setNext(pred.getNext())
  68.                 pred.setNext(plik)
  69.                 self._size+=1
  70.    
  71.     def __str__(self):
  72.         """(Katalog)->str"""
  73.         tekst="----------\n"
  74.         walker=self._head
  75.         while walker is not None:
  76.             tekst+="Nazwa: " + str(walker.getNazwa())
  77.             tekst+="\nRozmiar: " + str(walker.getRozmiar())
  78.             tekst+="\nUkryty: " + str(walker.getUkryty()) + "\n"
  79.             tekst+="----------\n"
  80.             walker=walker.getNext()
  81.         return tekst
  82.    
  83.    
  84.     def Kopiuj(self,other):
  85.         """(Katalog,Katalog)->NoneType"""
  86.         pred=None
  87.         walker1=self._head
  88.         walker2=other._head
  89.         while walker2 is not None:
  90.             if walker1 is not None and walker1.getNazwa()==walker2.getNazwa():
  91.                 walker1.setRozmiar(walker2.getRozmiar())
  92.                 walker1.setUkryty(walker2.getUkryty())
  93.                 pred=walker1
  94.                 walker1=walker1.getNext()
  95.                 walker2=walker2.getNext()
  96.             elif walker1 is None or walker1.getNazwa()>walker2.getNazwa():
  97.                 new=Katalog.Plik(walker2.getNazwa(),walker2.getRozmiar(),walker2.getUkryty())
  98.                 if walker1 is not None and walker1.getNazwa()==self._head.getNazwa():
  99.                     new.setNext(self._head)
  100.                     self._head=new
  101.                     pred=new
  102.                 else:
  103.                     new.setNext(pred.getNext())
  104.                     pred.setNext(new)
  105.                     pred=new
  106.                 self._size+=1
  107.                 walker2=walker2.getNext()
  108.             else:
  109.                 pred=walker1
  110.                 walker1=walker1.getNext()
  111.            
  112.    
  113.    
  114.    
  115.    
  116.    
  117. if __name__=="__main__":
  118.     k=Katalog()
  119.     flaga=1
  120.     while flaga==1:
  121.         nazwa=input("Podaj nazwe pliku pierwszego katalogu: ")
  122.         rozmiar=int(input("Podaj jego rozmiar: "))
  123.         ukryty=bool(input("Czy jest on ukryty?(0-False 1-True): "))
  124.         try:
  125.             p=Katalog.Plik(nazwa,rozmiar,ukryty)
  126.             k.Dodaj_plik(p)
  127.         except ValueError:
  128.             print("Nie mozna dodac pliku - niepoprawna wartosc")
  129.         except Katalog.Plik.Powtorzona_nazwa:
  130.             print("Plik o podanej nazwie już istnieje")
  131.         flaga=int(input("Chcesz dodac kolejny plik do tego katalogu?1-Tak 0-Nie: "))
  132.    
  133.  
  134.     k2=Katalog()
  135.     flaga=1
  136.     while flaga==1:
  137.         nazwa=input("Podaj nazwe pliku drugiego katalogu: ")
  138.         rozmiar=int(input("Podaj jego rozmiar: "))
  139.         ukryty=bool(input("Czy jest on ukryty?(0-False 1-True): "))
  140.         try:
  141.             p=Katalog.Plik(nazwa,rozmiar,ukryty)
  142.             k2.Dodaj_plik(p)
  143.         except ValueError:
  144.             print("Nie mozna dodac pliku - niepoprawna wartosc")
  145.         except Katalog.Plik.Powtorzona_nazwa:
  146.             print("Plik o podanej nazwie już istnieje")
  147.         flaga=int(input("Chcesz dodac kolejny plik do tego katalogu?1-Tak 0-Nie: "))
  148.        
  149.     Katalog.Kopiuj(k,k2)
  150.     print(k)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement