Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/user/bin/env python 3.4
- from sys import argv
- from sys import exit
- import random
- import math
- import os
- os.system('clear')
- #Proszę utworzyć funkcję przyjmującą jeden parametr i zwracającą słownik. Liczba elementów w słowniku jest wartością losową z przedziału [0,20). Kluczami są wartości rzeczywiste z przedziału [0, 1), a wartościami są wartości wyrażenia matematycznego z jedną zmienną przekazanego jako parametr wywołania funkcji obliczone dla danego klucza. Wartości w słowniku mają być zaokrąglone do trzeciego miejsca po przecinku i zapisane z taką dokładnością jako ciągi znaków. (1p)
- #1____________________________________________________________________________________
- def fun_1(parameter):
- slownik={str('%.3f'%random.random()):str("%.3f"%eval(parameter)) for i in range(random.randrange(20))}
- return slownik
- #2. Proszę napisać funkcję, do której można przekazać dowolną liczbę argumentów i zwracającą listę zawierającą elementy, wspólne dla wszystkich parametrów. Proszę użyć konstrukcji for-else. (1p)
- #2____________________________________________________________________________________
- def fun_2(*arg):
- lista=[]
- for i in arg[0]:
- for j in arg[1:]:
- if i not in j:
- break
- else:
- lista.append(i)
- return lista
- #3. Proszę napisać funkcję przyjmującą dwie sekwencje i parametr z wartością domyślną True. Funkcja zwraca listę zawierającą każdą pozycję pierwszego argumentu połączoną z każdą pozycją drugiego argumentu w postaci dwuelementowych krotek. Jeżeli wartość trzeciego parametru wynosi True, długość zwracanej listy równa jest długości krótszej z przekazanych sekwencji, w przeciwnym wypadku brakujące wartości uzupełniamy wartością None. Budowanie każdej z wynikowych list jedna linijka! (2p)
- #3____________________________________________________________________________________
- def fun_3(seq1, seq2, small=True):
- len_smaller=len(seq1) if len(seq1)<len(seq2) else len(seq2)
- if small==True:
- lista=[(seq1[i],seq2[i]) for i in range(len_smaller)]
- else:
- len_longer=len(seq1) if len(seq1)>len(seq2) else len(seq2)
- lista=[(seq1[i] if i<len(seq1) else None, seq2[i] if i<len(seq2) else None) for i in range(len_longer) ]
- return lista
- #4. Proszę napisać funkcję, która będzie zwracała najmniejszą/największą wartość spośród przekazanych parametrów. Pierwszym parametrem przekazanym do funkcji jest nazwa utworzonej przez Państwa funkcji, która porównuje dwie wartości. (2p)
- #4____________________________________________________________________________________
- def compare(new, current, how):
- if how=="less":
- return new if new<current else current
- elif how=="more":
- return new if new>current else current
- else:
- print("Blad")
- exit
- def fun_4(fun, *arg):
- minimum=arg[0]
- maximum=arg[0]
- for i in arg[1:]:
- minimum=fun(i, minimum, "less")
- maximum=fun(i, maximum, "more")
- return (minimum, maximum)
- #5. Proszę napisać funkcję umożliwiającą rozmienienie kwoty pieniędzy przekazanej jako jej pierwszy parametr nominałami określonymi poprzez drugi parametr - wartość domyślna krotka (10,5,2) (algorytm zachłanny). Proszę sprawdzić działanie funkcji przekazując inny zestaw monet. (2p)
- #5____________________________________________________________________________________
- def fun_5(amount, nominal=(10,5,2)):
- change="Kwote " + str(amount) + " przy nominalach " + str(nominal) + " rozmienionio na: "
- for n in nominal:
- if not amount<n:
- times=math.floor(amount/n)
- change+=str(times) + " nominal(ow) kwoty " + str(n) + ", "
- amount-=times*n
- return change[:-2] if amount==0 else "Nie udalo sie rozmienic pieniedzy"
- #6. Proszę napisać funkcję przyjmującą cztery parametry: liczba, której wartość zgadujemy, granice przedziału w którym szukana liczba się mieści i ostatni określający sposób poszukiwania wartości z wartością domyślną 'r'. Przy wartości domyślnej ostatniego parametru, liczby poszukujemy losując kolejną wartość, w innym przypadku poszukujemy wartości poprzez podział przedziału poszukiwania wartości na pół. W obu przypadkach w każdym kroku odpowiednio zawężamy przedział poszukiwania. Proszę wykorzystać operator trójargumentowy. (2p)
- #6____________________________________________________________________________________
- def fun_6(number, start, end, way="r"):
- if way=="r":
- temp=start
- while number!=temp:
- temp=random.randint(start, end)
- return temp
- else:
- temp=start+math.floor((end-start)/2)
- if temp==number:
- return temp
- else:
- return fun_6(number, start if number<temp else temp , end if number>temp else temp, "false")
- #main________________________________
- formula='2+2*2'
- l1=[1,2,3,4,5,6,7,8,9,0]
- l2=[4,2,7,4]
- l3=[1,2,8,7]
- #1____________________________________________________________________________________
- print("Zadanie 1: ")
- print(fun_1(formula))
- #2____________________________________________________________________________________
- print("Zadanie 2: ")
- print(fun_2(l1,l2,l3))
- #3____________________________________________________________________________________
- print("Zadanie 3: ")
- print(fun_3(l1, l2, False))
- #4____________________________________________________________________________________
- print("Zadanie 4: ")
- print(fun_4(compare, 0,-1,5,4,6,1))
- #5____________________________________________________________________________________
- print("Zadanie 5: ")
- print(fun_5(95))
- print(fun_5(95,(90,1)))
- print(fun_5(96))
- #6____________________________________________________________________________________
- print("Zadanie 6: ")
- print(fun_6(5, 1, 100000))
- print(fun_6(543, 1, 1000,"false"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement