<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=TI%2FSkrypty_z_zaj%C4%99%C4%87%2Fkz15-17</id>
	<title>TI/Skrypty z zajęć/kz15-17 - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=TI%2FSkrypty_z_zaj%C4%99%C4%87%2Fkz15-17"/>
	<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/Skrypty_z_zaj%C4%99%C4%87/kz15-17&amp;action=history"/>
	<updated>2026-04-22T23:25:58Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=TI/Skrypty_z_zaj%C4%99%C4%87/kz15-17&amp;diff=8428&amp;oldid=prev</id>
		<title>Tgub: Utworzono nową stronę &quot;&lt;source lang=&quot;python&quot;&gt; # -*- coding: utf-8 -*- ''' Zadanie 15 Przepisz klasę ciąg arytmetyczny z zadania 8, tak by zwracała odpowideni wyjątek przy odwołaniu się d...&quot;</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/Skrypty_z_zaj%C4%99%C4%87/kz15-17&amp;diff=8428&amp;oldid=prev"/>
		<updated>2020-06-03T18:24:34Z</updated>

		<summary type="html">&lt;p&gt;Utworzono nową stronę &amp;quot;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt; # -*- coding: utf-8 -*- &amp;#039;&amp;#039;&amp;#039; Zadanie 15 Przepisz klasę ciąg arytmetyczny z zadania 8, tak by zwracała odpowideni wyjątek przy odwołaniu się d...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
'''&lt;br /&gt;
Zadanie 15&lt;br /&gt;
Przepisz klasę ciąg arytmetyczny z zadania 8, tak by zwracała odpowideni wyjątek przy odwołaniu się do niewłasciwego elementu&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
class CiagArytmetyczny():&lt;br /&gt;
    def __init__(self, a1, r):&lt;br /&gt;
        self.__a1 = float(a1)&lt;br /&gt;
        self.__r = float(r)&lt;br /&gt;
&lt;br /&gt;
    def __get_a1__(self):&lt;br /&gt;
        return self.__a1&lt;br /&gt;
&lt;br /&gt;
    def __get_r__(self):&lt;br /&gt;
        return self.__r&lt;br /&gt;
    &lt;br /&gt;
    def __set_a1__(self, a1):&lt;br /&gt;
        self.__a1 = float(a1)&lt;br /&gt;
&lt;br /&gt;
    def __set_r__(self, r):&lt;br /&gt;
        self.__r = float(r)&lt;br /&gt;
    &lt;br /&gt;
    a1 = property(__get_a1__,__set_a1__)&lt;br /&gt;
    r = property(__get_r__,__set_r__)&lt;br /&gt;
    &lt;br /&gt;
    def __getitem__(self,n):&lt;br /&gt;
        if isinstance(n,int):&lt;br /&gt;
            if n &amp;lt; 1: raise IndexError &lt;br /&gt;
            return self.__a1 + (n-1)*self.__r&lt;br /&gt;
        raise TypeError&lt;br /&gt;
    &lt;br /&gt;
    def __add__(self, other):&lt;br /&gt;
        return CiagArytmetyczny(self.a1 + other.a1, self.r + other.r)&lt;br /&gt;
&lt;br /&gt;
    def __str__(self):&lt;br /&gt;
        return 'CiagArytmetyczny a1 = '+str(self.__a1)+' r = '+str(self.__r)&lt;br /&gt;
    &lt;br /&gt;
    def __repr__(self):&lt;br /&gt;
        return str(self)&lt;br /&gt;
    &lt;br /&gt;
'''&lt;br /&gt;
Zadanie 16&lt;br /&gt;
Początek jak w zadaniu 9:&lt;br /&gt;
&amp;quot;Napisz klasę CiągArytmetycznyZeSlownikiem, która dziedziczy po klasie &lt;br /&gt;
CiągArtymetyczny. Zaimplementuj w niej metodę __setitem__, która będzie&lt;br /&gt;
 zapisywać wywołane klucze i wartości do prywatnego słownika. &lt;br /&gt;
Klasa powinna zapewniać dostęp do tego słownika, ale bez możliwości jego edycji.&amp;quot;&lt;br /&gt;
ale tym rezem można już używać super(). Nadpisz również metodę __getitem__ tak, by zwracała wartosci wczesniej przypisane &lt;br /&gt;
przez __setitem__. Skorzystaj z try except &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
class CiagArytmetycznyZeSlownikiem(CiagArytmetyczny):&lt;br /&gt;
      &lt;br /&gt;
    def __init__(self,*args, **kwargs):&lt;br /&gt;
        super().__init__(*args, **kwargs)&lt;br /&gt;
        self.__sl = {}&lt;br /&gt;
        &lt;br /&gt;
    &lt;br /&gt;
    def __setitem__(self, key, value):&lt;br /&gt;
        self.__sl[key] = value&lt;br /&gt;
        &lt;br /&gt;
    @property&lt;br /&gt;
    def sl(self):&lt;br /&gt;
        return self.__sl.copy()&lt;br /&gt;
&lt;br /&gt;
    def __str__(self):&lt;br /&gt;
        return 'CiagArytmetycznyZeSlownikiem a1 = '+str(self.a1)+' r = '+str(self.r)&lt;br /&gt;
&lt;br /&gt;
    def __getitem__(self,n):&lt;br /&gt;
        try:&lt;br /&gt;
            return self.__sl[n]&lt;br /&gt;
        except:&lt;br /&gt;
            return super().__getitem__(n)&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Zadanie 17&lt;br /&gt;
Napisz dekorator mierzący czas działania funkcji i wypisujący ten czas przy każdym wywołaniu.&lt;br /&gt;
'''&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
def timeit(fun):&lt;br /&gt;
    def f(*args, **kwargs):&lt;br /&gt;
        start = time.time()&lt;br /&gt;
        result = fun(*args, **kwargs)&lt;br /&gt;
        stop = time.time()&lt;br /&gt;
        print('Obliczenie trwalo',stop-start,'s')&lt;br /&gt;
        return result&lt;br /&gt;
    return f&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tgub</name></author>
		
	</entry>
</feed>