dz0

Untitled

dz0
May 3rd, 2013
74
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # pagal http://galvosukykla.lt/failai/mokymas/programavimas/2013-pavasaris/ktug/KD3-pasiruosimas-matricos-pazymiai.pdf
  2. # pažymių matrica: eilutėse - mokiniai; stulpeliuose - KD
  3.  
  4. P = [
  5. #  KD0  KD1  KD2            mok_vid
  6.   [ 9,   5,   8],  # 0      7.33
  7.   [10,  10,   4],  # 1      8.0
  8.   [ 3,   6,  10],  # 2      6.33
  9.   [ 8,   7,   9],  # 3      8.0
  10.   [10,  10,  10],  # 4      10.0
  11. ]
  12.  
  13.  
  14. def show(M):   # matricos spausdinimui
  15.     for eil in M:
  16.         print( eil )
  17.  
  18. show(P)
  19.  
  20. ##########################################
  21. ## Tavo vardas/pavardė:  .................
  22. ##########################################
  23.  
  24.  
  25. # 0) surasti matricos eilučių/mokinių skaičių (mok_sk) ir stulpelių/KD (KD_sk).  # 0.5 tšk
  26. mok_sk = len(P)
  27. KD_sk =  len( P[0] )
  28.  
  29.  
  30. # 1a) Atspausdint kiekvieno mokinio vidurkį, # 1 tšk
  31. #~ ... sąrašo sumavimui galima naudoti funkciją sum( sar )
  32. for eil in P:
  33.     vid  = sum( eil ) / len(eil)
  34.     print( vid )
  35.  
  36. # 1b) sudaryti mokinių vidurkių sąrašą   # 0.5 tšk
  37. def mok_vidurkiai(M):
  38.     rez = []
  39.     for eil in M:
  40.         vid  = sum( eil ) / len(eil)
  41.         rez.append( vid )
  42.     print( "mokiniu vidurkiai: ", rez )
  43.     return rez
  44.  
  45. V = mok_vidurkiai(P)
  46.  
  47. # 2a) sukurti funkciją, kuri suranda (grąžina)  n-to KD vidurkį:  # 1 tšk
  48. def KD_vidurkis(M, nr):
  49.     suma = 0
  50.     for eil in M:
  51.         suma += eil[nr]
  52.     return  suma / len(M)
  53.  
  54. print( "KD2 vid:", KD_vidurkis(P, 2) )
  55.  
  56. # 2b) sudaryti KD vidurkių sarašą  # 1 tšk
  57. def KD_vidurkiai(M):
  58.     rez = []
  59.     for kd_nr in range(KD_sk):  # 0 1 2
  60.         kdvid = KD_vidurkis(M, kd_nr)
  61.         rez.append( kdvid )
  62.     print( "KD_vidurkiai:", rez )
  63.     return rez
  64.  
  65. KD_vidurkiai(P)
  66.  
  67.  
  68. # 3 Kontrolinį, kurio klasės vidurkis mažiausias, leidžiama perrašyti.
  69. # 3a) rasti tą KD (jo numerį)  # 1 tšk
  70. def blogiausias_KD(M):
  71.     minv_nr = None
  72.     minv = 11
  73.     KDV = KD_vidurkiai(M)
  74.     for nr in range(KD_sk):
  75.         if KDV[nr] < minv:
  76.             minv = KDV[nr]
  77.             minv_nr = nr
  78.     print( "blogiausio KD nr:", minv_nr , minv)
  79.     return minv_nr
  80.  
  81. blogiausio_nr = blogiausias_KD(P)
  82.  
  83. # 3b) sumodeliuoti jo perrašymą:   # 2 tšk
  84. # prognozuojama, kad perrašydamas už jį moksleivis gali gauti tiek, kokį dabar turi vidurkį (suapvalinant į mažesnę pusę, pvz int(7.8)-->7 ) .
  85. # Jeigu turi geresnį pažymį nei gautum - perrašyt, aišku, neapsimoka.
  86. # Atspausdinti: kiekvieno mokinio numerį ir ar perrašinės (True/False)
  87. def perrasymas(M):
  88.     kuri_perrasom_nr = blogiausias_KD(M)
  89.     MV = mok_vidurkiai(M)
  90.     for mok_nr in range(mok_sk):
  91.         paz = M[mok_nr][kuri_perrasom_nr]
  92.         vid = MV[mok_nr]
  93.         if int(vid) > paz:
  94.             ar_perrasines = True
  95.             M[mok_nr][kuri_perrasom_nr] = int(vid)
  96.         else:
  97.             ar_perrasines = False
  98.         print( mok_nr, paz, vid, ar_perrasines ) # spausdinam info, kad lengviau patikrint būtų
  99.  
  100.         # 3c) Kaip atrodys pažymių matrica po perrašymo (pasikeitus pažymiams)? # 1 tšk
  101.         # papildyt ciklą matricos keitimui...
  102.  
  103. perrasymas(P)
  104. show(P)
  105.  
  106. # 4) Surasti prasčiausią pažymį iš visų (nurodyti mokinio ir KD numerius)  # 2 tšk
  107. def didziausias_feilas(M):
  108.     min_eil, min_st = 0, 0
  109.     min_paz = 10
  110.     #~ ...
  111.     print( "prasciausias pazymys", min_paz, "yra is (eil, st) =", (min_eil, min_st) )
  112.  
  113. # 5) į matricą pridėti dar vieno KD (KD3) duomenis: # 2 tšk
  114. def papildomas_KD(M, KD):
  115.     #~ ...
  116.     show(M)  # po pakeitimų pažiūrim matricą
  117.  
  118. #~ KD3 = [10, 5, 8, 10, 2] # išvardinti KD3 pažymiai (ta pačia mokinių eilės tvarka, kaip ir P)
  119. #~ papildomas_KD(P, KD3)
RAW Paste Data