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