Hieronder de vraag: met daarbij onder mijn functie (het eerste heb ik al en het 2de heb ik een failure van 1/2 maar als ik wil controleren met de debugger werkt hij niet..)
Opgave
- Schrijf een functie DNAPalindroom waaraan een DNA sequentie als argument moet doorgegeven worden. Deze functie moet als resultaat de waarde True teruggeven indien de gegeven DNA sequentie een palindromische sequentie is. Anders moet de waarde False teruggegeven worden. Zo moet de functie voor de DNA sequentie GAATTC de waarde True teruggeven.
- Gebruik de functie DNAPalindroom om een functie langstePalindroom te schrijven. Aan deze functie moet een DNA sequentie als argument doorgegeven worden. De functie moet de langste palindromische deelsequentie van de gegeven sequentie als resultaat teruggeven. Om de langste palindromische deelsequentie te vinden, kan je alle mogelijke deelsequenties van de gegeven DNA sequentie overlopen, testen of het gaat om een palindromische sequentie, en uiteindelijk het langste palindroom overhouden. Om alle mogelijke deelsequenties van een gegeven DNA sequentie te doorlopen, kan je alle mogelijke startposities doorlopen en voor elke mogelijke startpositie alle mogelijke stopposities doorlopen. Op die manier vind je elke deelsequentie als de sequentie tussen elke combinatie van mogelijke start- en stopposities.
>>> DNAPalindroom('GAATTC')
True
>>> DNAPalindroom('AGACTCT')
False
>>> langstePalindroom('CCCCCCCCGAATTCTTTTATTTT')
'GAATTC'
>>> langstePalindroom('')
''
MIJN CODE:
def DNAPalindroom(woord):
'''
>>> DNAPalindroom('GAATTC')
True
>>> DNAPalindroom('AGACTCT')
False
'''
nieuwezin = ''
for letter in woord:
if letter == 'G':
nieuwezin += 'C'
elif letter == 'A':
nieuwezin += 'T'
elif letter == 'T':
nieuwezin += 'A'
else:
letter == 'C'
nieuwezin += 'G'
if nieuwezin == woord[::-1]:
return True
return False
def langstePalindroom(woord):
'''
>>> langstePalindroom('CCCCCCCCGAATTCTTTTATTTT')
'GAATTC'
>>> langstePalindroom('')
''
'''
nieuwezin = ''
for begin in range(len(woord)): #nu begint deze met een begin is O en gaat hij daarna de andere for loop in!
for einde in range(begin, len(woord)):#hij neemt het begin over van de vorige [0,1],[0,2],[0,3]
if DNAPalindroom(woord[begin, einde]):
if len(nieuwezin) < len(woord[begin,einde]):
nieuwezin = woord[begin,einde]
return nieuwezin
if __name__ == '__main__':
import doctest
doctest.testmod()
MVG
Katrien