Advertisement
Patresss

lab03

Mar 24th, 2015
442
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.68 KB | None | 0 0
  1. #!/user/bin/env python 3.4
  2.  
  3. from sys import argv
  4. from sys import exit
  5. import random
  6. import math
  7.  
  8. import os
  9. os.system('clear')
  10.  
  11.  
  12. #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)
  13. #1____________________________________________________________________________________
  14. def fun_1(parameter):
  15.     slownik={str('%.3f'%random.random()):str("%.3f"%eval(parameter)) for i in range(random.randrange(20))}
  16.     return slownik
  17.  
  18.    
  19. #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)
  20. #2____________________________________________________________________________________
  21. def fun_2(*arg):
  22.     lista=[]
  23.     for i in arg[0]:
  24.         for j in arg[1:]:
  25.             if i not in j:
  26.                 break
  27.         else:
  28.             lista.append(i)
  29.     return lista
  30.  
  31.  
  32. #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)  
  33. #3____________________________________________________________________________________
  34. def fun_3(seq1, seq2, small=True):
  35.     len_smaller=len(seq1) if len(seq1)<len(seq2) else len(seq2)
  36.    
  37.     if small==True:
  38.         lista=[(seq1[i],seq2[i]) for i in range(len_smaller)]
  39.     else:
  40.         len_longer=len(seq1) if len(seq1)>len(seq2) else len(seq2)
  41.         lista=[(seq1[i] if i<len(seq1) else None, seq2[i] if i<len(seq2) else None)  for i in range(len_longer) ]
  42.     return lista
  43.  
  44. #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)
  45. #4____________________________________________________________________________________
  46. def compare(new, current, how):
  47.     if how=="less":
  48.         return new if new<current else current
  49.     elif how=="more":
  50.         return new if new>current else current
  51.     else:
  52.         print("Blad")
  53.         exit
  54.  
  55. def fun_4(fun, *arg):
  56.     minimum=arg[0]
  57.     maximum=arg[0]
  58.     for i in arg[1:]:
  59.         minimum=fun(i, minimum, "less")
  60.         maximum=fun(i, maximum, "more")
  61.     return (minimum, maximum)
  62.  
  63.        
  64. #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)
  65. #5____________________________________________________________________________________
  66. def fun_5(amount, nominal=(10,5,2)):
  67.     change="Kwote " + str(amount) + " przy nominalach " + str(nominal) + " rozmienionio na: "
  68.  
  69.     for n in nominal:
  70.         if not amount<n:
  71.             times=math.floor(amount/n)
  72.             change+=str(times) + " nominal(ow) kwoty " + str(n) + ", "
  73.             amount-=times*n
  74.  
  75.    
  76.     return change[:-2] if amount==0 else "Nie udalo sie rozmienic pieniedzy"
  77.  
  78.  
  79. #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)
  80. #6____________________________________________________________________________________
  81. def fun_6(number, start, end, way="r"):
  82.     if way=="r":
  83.         temp=start
  84.         while number!=temp:
  85.             temp=random.randint(start, end)
  86.         return temp
  87.     else:
  88.         temp=start+math.floor((end-start)/2)
  89.         if temp==number:
  90.             return temp
  91.         else:
  92.             return fun_6(number, start if number<temp else temp , end if number>temp else temp, "false")
  93.    
  94.  
  95.  
  96. #main________________________________
  97. formula='2+2*2'
  98. l1=[1,2,3,4,5,6,7,8,9,0]
  99. l2=[4,2,7,4]
  100. l3=[1,2,8,7]
  101. #1____________________________________________________________________________________
  102. print("Zadanie 1: ")
  103. print(fun_1(formula))
  104. #2____________________________________________________________________________________
  105. print("Zadanie 2: ")
  106. print(fun_2(l1,l2,l3))
  107. #3____________________________________________________________________________________
  108. print("Zadanie 3: ")
  109. print(fun_3(l1, l2, False))
  110. #4____________________________________________________________________________________
  111. print("Zadanie 4: ")
  112. print(fun_4(compare, 0,-1,5,4,6,1))
  113. #5____________________________________________________________________________________
  114. print("Zadanie 5: ")
  115. print(fun_5(95))
  116. print(fun_5(95,(90,1)))
  117. print(fun_5(96))
  118. #6____________________________________________________________________________________
  119. print("Zadanie 6: ")
  120. print(fun_6(5, 1, 100000))
  121. print(fun_6(543, 1, 1000,"false"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement