Slika 85: Primer napačnega odgovora

Slika 85: Primer napačnega odgovora
Rešitev študenta, prikazana na Slika 85, je delno prestala testne primere. Pravilno deluje na 1., 3. in 5. testnem primeru, napačno pa za negativna števila in 0. Študent je očitno pozabil, da so podatki lahko tudi negativni ali pa 0.
6.2 Produkt števil v seznamu
Sestavili bomo klasično nalogo tipa 'napiši funkcijo' z uporabo prototipa python3_cosc121. Od študenta bomo zahtevali, da kodo napiše v skladu s sistemom za preverjanje kakovosti kode Pylint. Pokazali bomo tudi, kako se naloga delno oceni, torej bo študent nagrajen za vsak pravilno rešen testni primer.
Preden se lotimo sestave vprašanja, moramo biti seznanjeni z načinom preverjanja sloga kodiranja. Pylint za preverjanje sintakse uporablja slogovni priročnik kodiranja PEP 8, ki obsega bogato knjižnico z navodili in s priporočili sloga kodiranja. Pri pisanju naših kod so potrebna naslednja:
Zamik se določi s 4 presledki
Število znakov v vrstici je omejeno na 100. S tem izboljšamo preglednost kode
Ko definiramo funkcijo, je obvezen dokumentacijski niz (docstring), v katerem opišemo, kaj počne naša funkcija. Primer:
def funkcija(spremenljivka):
''' Funkcija naredi nekaj s spremenljivko'''
Imena funkcij, podatkovnih struktur, nizov. itd. morajo biti sestavljena iz najmanj 3 znakov. V imenu je prepovedana uporaba velikih črk. Besede najlepše ločimo s podčrtajem. Primer:
def kvadriraj(n): prekratko ime spremenljivke
mojSeznam = [] ne smemo uporabljati velikih črk
def vsota(seznam_stevil): paziti moramo tudi, da ne poimenujemo glavnih
vsota = 0 in lokalnih spremenljivk enako
def kvadriraj(stevilo): primer ustrezno izbranega imena spremenljivke
moj_seznam = [] ustrezno ime seznama
Opozori na nekoristne ukaze. Primer je definirana spremenljivka oziroma konstanta, ki se ne uporabi v nadaljevanju kode.
Potreben je natanko en presledek okoli znakov: == , <, >, !=,<>, <= , >= , in , not in , is , is not, and , or , not ...
Sistem Pylint pri preverjanju sloga kodiranja upošteva vsa zgoraj našteta pravila (in še ostala), zato moramo biti pri pisanju kode dosledni.
Besedilo naloge: Sestavi funkcijo produkt(seznam), ki izračuna produkt vseh števil v seznamu, zaokrožen na celo število. Koda bo najprej preverjena s sistemom za preverjanje kakovosti kode Pylint, zato pazi na slog kodiranja. Funkcija mora delovati tudi, če je podatek(število) v seznamu zapisan v obliki niza. Če je seznam prazen, naj vrne 0.
Za seznam [1, 2 ,3.1 ,'-4'] nam funkcija vrne rezultat -25, za seznam [] pa 0.
Kot pri prejšnji nalogi najprej premislimo, kakšen bo odgovor (pravilen program) in kakšne testne primere bi bilo pametno sestaviti. Pripravili bomo naslednje teste:
Testni primer 1 –podali bomo seznam z naravnimi števili, da preverimo delovanje funkcije za tipični primer.
Testni primer 2 – podali bomo prazen seznam. Funkcija mora vrniti število 0.
Testni primer 3 – podali bomo seznam, ki bo vseboval negativno število in decimalno število. S tem testnim primerom bomo preverili, če funkcija rezultat zaokroži na celo število. Ta primer bomo podali tudi za zgled v navodilih naloge.
Testni primer 4 – podali bomo seznam, ki vsebuje nize in števila. Preverili bomo, če funkcija pravilno razbere podatek (število) iz niza.
Testni primer 5– V seznamu bo med drugimi tudi število 0. Funkcija mora vrniti rezultat 0.
Pravilen odgovor, ki ustreza zahtevam sistema Pylint, je na primer sledeč (Slika 86):
|