Intermediate classes: Difference between revisions

From 22118
Jump to navigation Jump to search
 
Line 15: Line 15:
The first two exercises will continue with the '''Fasta''' class from last time.
The first two exercises will continue with the '''Fasta''' class from last time.
# Add iteration and length evaluation (__len__ magic method) to the '''Fasta''' class using magic methods. Do this so you can write code like <div style="font-family:'Courier New'">if len(MyFastaInstance) > 0:<br>&nbsp;&nbsp;&nbsp;&nbsp;for header, sequence in MyFastaInstance:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Do something with header and sequence<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(header, sequence)</div>The function '''len''' returns the number of sequences.<br><br>
# Add iteration and length evaluation (__len__ magic method) to the '''Fasta''' class using magic methods. Do this so you can write code like <div style="font-family:'Courier New'">if len(MyFastaInstance) > 0:<br>&nbsp;&nbsp;&nbsp;&nbsp;for header, sequence in MyFastaInstance:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Do something with header and sequence<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(header, sequence)</div>The function '''len''' returns the number of sequences.<br><br>
# Add the methods '''deletethis()''', '''insertthis(header, sequence)''', '''verifythis(alphabet)''' and '''discardthis(alphabet)''' to the '''Fasta''' class. The methods should only work when ''iterating over an instance at the current item'', i.e. they work when you are iterating over the fasta sequences on the ''current'' sequence and header, like this:<div style="font-family:'Courier New'">for header, sequence in MyFastaInstance:<br>&nbsp;&nbsp;&nbsp;&nbsp;if not MyFastaInstance.verifythis("DNA"):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyFastaInstance.deletethis()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue<br>&nbsp;&nbsp;&nbsp;&nbsp;# Do something with header and sequence</div>As some may remember, it is normally impossible to successfully iterate straightforward through a list and delete and/or add elements to the list during the iteration. You have to make this possible, maybe by changing the way your iteration works in the previous exercise.<br>br>
# Add the methods '''deletethis()''', '''insertthis(header, sequence)''', '''verifythis(alphabet)''' and '''discardthis(alphabet)''' to the '''Fasta''' class. The methods should only work when ''iterating over an instance at the current item'', i.e. they work when you are iterating over the fasta sequences on the ''current'' sequence and header, like this:<div style="font-family:'Courier New'">for header, sequence in MyFastaInstance:<br>&nbsp;&nbsp;&nbsp;&nbsp;if not MyFastaInstance.verifythis("DNA"):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyFastaInstance.deletethis()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue<br>&nbsp;&nbsp;&nbsp;&nbsp;# Do something with header and sequence</div>As some may remember, it is normally impossible to successfully iterate straightforward through a list and delete and/or add elements to the list during the iteration. You have to make this possible, maybe by changing the way your iteration works in the previous exercise.<br><br>


== Exercises for extra practice ==
== Exercises for extra practice ==

Latest revision as of 13:46, 6 March 2026

Previous: Beginning classes Next: Beginning unit test

Required course material for the lesson

Powerpoint: Classes
Resource: Example code - Classes

Subjects covered

Classes
Object Oriented Programming

Exercises to be handed in

The first two exercises will continue with the Fasta class from last time.

  1. Add iteration and length evaluation (__len__ magic method) to the Fasta class using magic methods. Do this so you can write code like
    if len(MyFastaInstance) > 0:
        for header, sequence in MyFastaInstance:
            # Do something with header and sequence
            print(header, sequence)
    The function len returns the number of sequences.

  2. Add the methods deletethis(), insertthis(header, sequence), verifythis(alphabet) and discardthis(alphabet) to the Fasta class. The methods should only work when iterating over an instance at the current item, i.e. they work when you are iterating over the fasta sequences on the current sequence and header, like this:
    for header, sequence in MyFastaInstance:
        if not MyFastaInstance.verifythis("DNA"):
            MyFastaInstance.deletethis()
            continue
        # Do something with header and sequence
    As some may remember, it is normally impossible to successfully iterate straightforward through a list and delete and/or add elements to the list during the iteration. You have to make this possible, maybe by changing the way your iteration works in the previous exercise.

Exercises for extra practice