Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- class dichotomousKey(object):
- def __init__(self, steps = []):
- self.steps = steps
- def load(self, file_name):
- with open(file_name + '.txt') as csv_file:
- csv_reader = csv.reader(csv_file, delimiter='|')
- line_count = 0
- for row in csv_reader:
- if line_count == 0:
- self.unpack(row)
- line_count += 1
- else:
- self.unpack(row)
- line_count += 1
- def unpack(self, row):
- if len(row) == 4:
- level, argument, goto, organism = row
- return self.steps.append(Step(level, argument, goto, organism))
- if len(row) == 3:
- level, argument, goto = row
- return self.steps.append(Step(level, argument, goto))
- def execute(self, level):
- print(self.steps[level].level + 'a : ' + self.steps[level].argument)
- print(self.steps[level + 1].level + 'b : ' + self.steps[level + 1].argument)
- choice = str(input("<a/b> "))
- print()
- if choice.lower() == 'a':
- if self.steps[level].has_organism():
- print("Your organism is: %s" % (self.steps[level].organism))
- else:
- self.execute(self.steps[level].get_list_index(self.steps[level].goto))
- elif choice.lower() == 'b':
- if self.steps[level + 1].has_organism():
- print("Your organism is: %s" % (self.steps[level + 1].organism))
- else:
- self.execute(self.steps[level + 1].get_list_index(self.steps[level + 1].goto))
- else:
- print("Error, Invalid Input!")
- class Step(object):
- def __init__(self, level=None, argument=None, goto=None, organism=None):
- self.level = level
- self.argument = argument
- self.goto = goto
- self.organism = organism
- def has_organism(self):
- if self.organism:
- return True
- def get_list_index(self, goto):
- return (int(goto) * 2) - 2
- def main():
- d_key = dichotomousKey()
- d_key.load('dichotomous')
- d_key.execute(0)
- input()
- main()
- #SAMPLE TEXT FILE
- '''
- Vertebrate Dichotomous Key
- 1|It has fur.|0|Mammals
- 1|It has no fur.|2
- 2|It has feathers.|0|Birds
- 2|It has no feathers.|3
- 3|It has dry skin.|0|Reptiles
- 3|It has moist skin|4
- 4|It has scales|0|Fish
- 4|It has no scales|0|Amphibians
- '''
Add Comment
Please, Sign In to add comment