Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/user/bin/env python 3.2
- from sys import argv
- from sys import exit
- import random
- import math
- import os
- os.system('clear')
- #1. Proszę napisać generator zwracający kolejne potęgi liczby przekazanej jako parametr, aż do potęgi przekazanej jako drugi parametr (1p).
- #1__________________________________________
- def potega(n,m):
- x=n
- for i in range(m):
- yield x
- x*=n
- print("Zadanie 1:")
- for i in potega(2,3):
- print(i)
- #2. Proszę wygenerować losowy ciąg zer i jedynek o długości N. Proszę napisać generator zwracający liczbę zer oddzielających kolejne jedynki w sekwencji przekazanej jako parametr. Korzystając z utworzonego generatora proszę obliczyć średnią odległość między kolejnymi jedynkami w wygenerowanych wcześniej ciągu
- #2__________________________________________
- def zerojeden(n):
- l=[random.randint(0,1) for i in range(n)]
- return l
- def liczbazer(seq):
- licznik=0
- for i in seq:
- if i==1 and licznik!=0:
- yield licznik
- licznik=0
- elif i==0:
- licznik+=1
- print("Zadanie 2:")
- lista=zerojeden(10)
- print(lista)
- suma=0
- for i in liczbazer(lista):
- print(i)
- suma+=i
- srednia=suma/sum(1 for x in liczbazer(lista))
- print(list(liczbazer(lista)))
- print("srednia: "+ str(srednia))
- #3. Proszę napisać trzy funkcje generatorowe:
- #zwracającą kolejne elementy ciągu Fibonacciego,
- #zwracającą te wartości z przekazanej jako parametr sekwencji, które są parzyste/nieparzyste
- #zwracającą te wartości z przekazanej jako pierwszy parametr sekwencji, które są niewiększe niż drugi parametr przekazany do funkcji
- #Korzystając ze zdefiniowanych funkcji proszę obliczyć sumę parzystych/nieparzystych elementów ciągu Fibonacciego mniejszych od 100 (2p).
- #3_________________________________
- def fib(n):
- a, b = 0, 1
- while 0<n:
- yield a
- a, b = b, a+b
- n=n-1
- def parz(n):
- for i in n:
- if i%2==0:
- yield i
- def nparz(n):
- for i in n:
- if i%2!=0:
- yield i
- def nwieksze(seq, n):
- for i in seq:
- if i<=n:
- yield i
- print("Zadanie 3:")
- print("Ciag:")
- for i in fib(15):
- print(i)
- l1=fib(15)
- print("Parzyste:")
- for i in parz(l1):
- print(i)
- l2=fib(15)
- print("Nie parzyste:")
- for i in nparz(l2):
- print(i)
- l3=fib(15)
- x=10
- print("Nie wieksze niz "+str(x)+" :")
- for i in nwieksze(l3,x):
- print(i)
- sumap = 0
- suman = 0
- for i in parz (nwieksze (fib(100),100) ):
- sumap+=i
- for i in nparz (nwieksze (fib(100),100) ):
- suman+=i
- print("Suma parzystych: "+ str(sumap))
- print("Suma nie parzystych: "+ str(suman))
- #4. Proszę napisać generator działający dokładnie tak samo jak wbudowany range, ale pozwalający na generowanie liczb rzeczywistych (2p).
- #4__________________________________________
- def myrange(pocz, kon=float("inf"), krok=1):
- if kon==float("inf"):
- kon=pocz
- pocz=0
- while pocz<kon:
- yield pocz
- pocz+=krok
- print("Zadanie 4:")
- for i in myrange(-2.3,5.4,0.7):
- print (i)
- #5. Proszę napisać generator zwracający liczby spełniające warunek, że wartość kolejna jest co najmniej o 0.4 mniejsza lub większa od wartości poprzedniej. Działanie generatora należy zakończyć, jeżeli wylosowana wartość jest mniejsza od 0.1 (1p).
- #5_________________________________
- def plusminus():
- pierwsza=random.random()
- nastepna=random.random()
- while nastepna > 0.1:
- if pierwsza - 0.4 < nastepna < pierwsza + 0.4:
- yield nastepna
- pierwsza=nastepna
- nastepna=random.random()
- print("Zadanie 5:")
- for i in plusminus():
- print(i)
- #6. Proszę napisać generator zwracający wartość ui zależności rekurencyjnej:
- #ui=ui-1+a/xi-1 z wartością początkową u0=0 dla x0=1 oraz z xi=x0+ia.
- #Obliczenia proszę poprowadzić dla a=0.05 i przerwać je dla x=1.5. Zależność pozwala na wyznaczenie przybliżonej wartości logarytmu naturalnego z danej liczby. Generator ma zwracać x oraz przybliżoną i dokładną wartość logarytmu naturalnego (2p).
- #6_________________________________
- def fib(n):
- if n == 0 or n == 1:
- return n
- else:
- return fib(n-1)+fib(n-2)
- '''def rek(u, x, a):
- if u==0
- return
- else:
- u= rek(u-1,x,a)+a/rek(u,x-1,a)
- x=rek(u,0,a) +
- '''
- print("Zadanie 6:")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement