Home
Siku Hiyo, Mwanafunzi Alinifundishia "for ... else" ya Python
Leo nilikuwa na kipindi cha Form 1. Siku hizi, wanafunzi wanashindana kukatua changamoto za Python kutumia NyokaTofali, ambayo ni software nimeitengeneza; uweza kusoma zaidi kuhusu NyokaTofali hapa.
Wanafunzi wengine walijaribu kukatua changamoto hii:
Elezo la Changamoto : Guanine in DNA
There are four bases in DNA: G (guanine), C (cytosine), A (adenine), and T (thymine). Here is a strand of DNA without guanine in it:
$$‘ATACCATAACCAAATTTTAA’$$
And here is a strand of DNA with guanine in it:
$$‘AGGGGGTTATTACCCATACA’$$
Complete the Python program so that it returns True if guanine is inside the DNA given to it. If there is no guanine inside the DNA, return False.
Code hii iliwapewa na mimi:
def guanine_iko(dna):
for base in dna:
print base
NyokaTofali inakuwa na mitihani ambazo wanafunzi waweza kukimbia peke yao, kama hizi:
print(guanine_iko('ATATCCCC')) # Should return False
print(guanine_iko('AGATTCAC')) # Should return True
print(guanine_iko('GGGGGGGG')) # Should return True
print(guanine_iko('')) # Should return False
print(guanine_iko('ATTTTATTTAATG')) # Should return True
Sasa, nina mwanafunzi wa kike mwenye akili sana. Alikuwa na code hii:
def guanine_iko(dna):
for base in dna:
if base == G:
return True
else:
return False
Hii haitafanya kazi kwa sababu anahitaji "G"
au 'G'
. Nilimueleza hivi: base
iweza kubadilisha, lakini maana ya G
ni ‘guanine’ tu, haitabadilisha. Kwa hiyo, tuhitaji "G"
au 'G'
.
Mwanafunzi aliibadilisha, halafu alikuwa na:
def guanine_iko(dna):
for base in dna:
if base == 'G':
return True
else:
return False
Aliniuliza: “Kwa nini hii inashindwa?”
Nilimuuliza: “Tunataka kurudisha True
au False
baada ya kucheki base ya kwanza tu, au baada ya kucheki base zote?”
Alijibu: “Base zote.”
Mimi: “Ndiyo. Kwa hiyo, turudishe False
ndani ya for
loop, au nje?”
Yeye: “Nje.”
Aliibadilisha tena, halafu alikimbia. Alishinda, akakuwa na furaha. Mimi nilikuwa ninaangalia, nikashangaa. Amefanya hivyo:
def guanine_iko(dna):
for base in dna:
if base == 'G':
return True
else:
return False
Aliiweka tofali la else
chini ya tofali la for
. Niliwaza: hivyo inawezekana? Nilifikiri kwamba nimekosea na NyokaTofali.
Lakini inawezekana. Nilisoma kuhusu mambo haya, kwa mfano hapa. Nilijifunza kwamba ukiandika else
baada ya for
, na code ya for
haitakapofanya break
au return
, code ya else
itakimbia. Hivyo vinatumiwa kwa loops za kutafuta: kama code ikishindwa kutafuta kitu, uweza kuandika else
kumaliza.
Na kutatua changamoto hii, kazi ya kutafuta ndiyo lazima. Tunatafuta ‘G’ katika DNA. Kwa hiyo, mwanafunzi aliandika kweli: return True
katika for
, halafu return False
katika else
, nje na chini ya for
.
Tukumbuke: shule ni mahali kwa walimu kuwafundishia wanafunzi, na wanafunzi kuwafundishia walimu.