Języki Symboliczne, laboratorium 13 Zadanie 1. Napisz klasę

Transkrypt

Języki Symboliczne, laboratorium 13 Zadanie 1. Napisz klasę
Języki Symboliczne, laboratorium 13
Zadanie 1. Napisz klasę Wspak przyjmującą jako argument konstruktora pewien tekst. Klasa ta
powinna pełnić rolę iteratora, iterującego po podanym tekście wspak.
https://docs.python.org/3/tutorial/classes.html#iterators
Zadanie 2. Napisz klasę Unikalne przyjmującą jako argument konstruktora pewną listę. Klasa ta
powinna pełnić rolę iteratora, iterującego po unikalnych elementach listy (po elementach, które
występują w liście dokładnie jeden raz).
Zadanie 3. Do klasy PrzechowywaczMonet z laboratorium 11 dodaj metodę wszystkieMonety()
będącą generatorem zwracającym kolejno wszystkie przechowywane monety posortowane rosnąco
po nominale.
https://docs.python.org/3/tutorial/classes.html#generators
Zadanie 4. Napisz funkcję JednorękiBandyta, przyjmującą jako argument pewną kwotę w
groszach. Funkcja ta powinna być generatorem tworzącym obiekty monet o losowych nominałach
do kwoty zadanej argumentem. Przykładowo, JednorękiBandyta(100) powinien wygenerować
jedną monetę 1zł LUB dwie monety po 50gr LUB monetę 50gr i 5 monet 10gr.
Zadanie 5. Napisz funkcję liczącą sumę iloczynów elementów dwóch list a i b:
a[0]*b[0]+a[1]*b[1]+... . Obie listy powinny być równej długości. Wykorzystaj
generator expressions i funkcję zip. Co zwraca wyrażenie (i for i in range(10))?
https://docs.python.org/3/tutorial/classes.html#generator-expressions
Zadanie 6. Napisz funkcję średnia będącą generatorem, liczącą średnią wartości przesłanych do
niej przy pomocy metody send.
https://docs.python.org/3/reference/expressions.html#yield-expressions
Przykładowy kod używający send:
def sumowanie():
suma=0
while True:
a=(yield)
print("Otrzymano:", a)
suma+=a
yield suma
gen=sumowanie()
for i in [1, 2, 3, 5, 7, 11]:
next(gen)
print("Generator zwrócił:", gen.send(i))
mwee