KMI/PHT Programování v jazyce Python: Seminář 07

Výjimky a práce se soubory

Jupyter notebook z dnešního semináře.

Zadání

  1. úkol 1

    Napište dekorátor log, který bude logovat (vypíše název metody) operace nad zásobníkem, jehož implementace je uvedena níže (není ošetřena detekce prázdného zásobníku).

    class stack:
      def __init__(self):
        self.data = []
    
      def pop(self):
          value = self.data[-1]
          del self.data[-1]
          return value
    
      def top(self):
          return self.data[-1]
    
      def push(self, value):
          self.data.append(value)

  2. úkol 2

    Upravte třídu zásobník tak, aby bylo možné manipulovat přímo (bez metod) s vnitřní proměnou data. Funkčnost zásobníku musí zůstat zachována. Například:

    zasobnik = stack()
    zasobnik.data = 10 # ekvivalent push(10)
    zasobnik.data = 11 # ekvivalent push(11)
    zasobnik.data # operace top() -> 11
    del zasobnik.data # operace pop()
    zasobnik.data # 10

  3. úkol 3

    Upravte třídu zásobník tak, aby nedošlo k chybě při operaci top a pop nad prázným zásobníkem.