View difference between Paste ID: MdQdE5r6 and edkjgbuE
SHOW: | | - or go back to the newest paste.
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-
#  KD0  KD1  KD2
4+
5-
  [ 9,   8,   5],  # 0
5+
#  KD0  KD1  KD2            mok_vid
6-
  [10,   4,  10],  # 1
6+
  [ 9,   5,   8],  # 0      7.33
7-
  [ 3,  10,   5],  # 2
7+
  [10,  10,   4],  # 1      8.0
8-
  [ 8,   9,   7],  # 3
8+
  [ 3,   6,  10],  # 2      6.33
9-
  [10,  10,  10],  # 4
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)
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)