import sys # Program: Cats.py # Author: Craig Schock # Date: September 26, 2007 # # Purpose: This program contains the biological classification for all known species of feline. # This program allows the user to enter a search criteria which is matched against the # dataset. All matching records are printed in an easy to read format # Feline dataset taken from (http://www.wildcatconservation.org cats = [["african golden cat, leopard's brother","carnivora","felidae","profelis","aurata","11 - 14 kg (24 - 30 lbs)"], ["black footed cat, ant hill tiger","carnivora","felidae","felis","nigripes","1.0 - 2.4 kg (2.2 - 5 lbs)"], ["caracal, desert lynx","carnivora","felidae","caracal","caracal","10 - 18 kg (22 - 39 lbs)"], ["sand cat, sahara cat, sand dune cat","carnivora","felidae","felis","margarita","2 - 3.4 kg (4 - 8 lbs)"], ["serval","carnivora","felidae","leptailurus","serval","9 - 19 kg (20 - 40 lbs)"], ["wildcat, scottish wildcat, indian desert cat","carnivora","felidae","felis","silvestris","3 - 8 kg (7 - 18 lbs)"], ["asian golden, temminck's cat","carnivora","felidae","catopuma","temminckii","12-15 kg (26-33 lbs)"], ["bornean bay cat, bay cat","carnivora","felidae","catopuma","badia","about 2 - 4 kg (4 - 9 lbs)"], ["chinese mountain cat, chinese desert cat","carnivora","felidae","felis","bieti","4 -5.5 kg (9 - 12 lbs)"], ["clouded leopard, mint leopard","carnivora","felidae","neofelis","nebulosa","11-25 kg (24 - 55 lbs)"], ["fishing cat","carnivora","felidae","prionailurus","viverrina","6 - 12 kg (13 - 26 lbs)"], ["flat headed cat","carnivora","felidae","prionailurus","planiceps","1.5-2.5 kg (3-5 lbs)"], ["iriomote cat","carnivora","felidae","mayailurus","iriomotensis","3 - 4.5 kg (6.5 - 10 lbs)"], ["jungle cat, swamp cat, reed cat","carnivora","felidae","felis","chaus","4 - 16 kg (9 - 35 lbs)"], ["leopard cat, bengal cat, amur cat","carnivora","felidae","prionailurus","bengalensis","2.5 - 7 kg (5.5 - 15 lbs)"], ["marbled cat","carnivora","felidae","pardofelis","marmorata","4 - 8 kg (9 - 18 lbs)"], ["pallas cat, manul, steppe cat","carnivora","felidae","otocolobus","manul","3 - 4.5 kg (5.5 - 10 lbs)"], ["rusty spotted cat","carnivora","felidae","prionailurus","rubiginosa","1.1 - 1.6 kg (3 - 4 lbs)"], ["lynx- eurasian","carnivora","felidae","lynx","lynx","9 - 38 kg (20 - 83 lbs)"], ["lynx- iberian","carnivora","felidae","lynx","pardinus","8.7 - 14.5 kg (19 - 32 lbs)"], ["lynx - canadian","carnivora","felidae","lynx","canadensis","8 - 14 kg (18 - 30 lbs)"], ["bobcat, red lynx","carnivora","felidae","lynx","rufus","5.8 - 13.3 kg (13 - 30 lbs)"], ["andean mountain cat","carnivora","felidae","oreailurus","jacobita","3 - 6 kg (7 - 15 lbs)"], ["geoffroy's cat","carnivora","felidae","oncifelis","geoffroyi","3 - 8 kg (7 - 17 lbs)"], ["jaguarundi, otter cat, eyra","carnivora","felidae","herpailurus","yaguarondi","3 - 9 kg (6 - 20 lbs)"], ["kodkod, guigna","carnivora","felidae","oncifelis","guigna","2 - 3 kg (4 - 6 lbs)"], ["margay, tree ocelot, long tailed cat","carnivora","felidae","leopardus","wiedi","3 - 9 kg (9 - 20 lbs)"], ["ocelot, painted leopard","carnivora","felidae","leopardus","pardalis","8 - 12 kg (17-26 lbs)"], ["oncilla, tiger cat, little spotted cat","carnivora","felidae","leopardus","tigrinus","2-3 kg (4-8 lbs)"], ["pampas cat","carnivora","felidae","oncifelis","colocolo","3 - 7 kg (6 - 15 lbs)"], ["domestic cat, house cat","carnivora","felidae","felis","catus","3-4.5 kg (7-10 lbs)"], ["cougar, mountain lion, puma","carnivora","felidae","puma","concolor","35 - 100 kg (77 - 220 lbs)"], ["jaguar, el tigre","carnivora","felidae","panthera","onca","males average 55 kg (122 lbs), females average 36 kg (80 lbs)"], ["snow leopard","carnivora","felidae","uncia","uncia","30 - 75 kg (66 - 165 lbs)"], ["tiger","carnivora","felidae","panthera","tigris","65 - 300 kg (150 - 640 lbs)"], ["amur leopard","carnivora","felidae","panthera","pardus orientalis","male 32-91 kg, female 25-59 kg"], ["cheetah, hunting leopard","carnivora","felidae","acinonyx","jubatus","40 - 60 kg (88 - 132 lbs)"], ["leopard","carnivora","felidae","panthera","pardus","30 - 91 kg (65 - 200 lbs)"], ["lion, african lion, asian lion","carnivora","felidae","panthera","leo","120 - 250 kg (265 - 550) lbs"] ] # prompt the user for his/her search criteria sys.stdout.write("Please enter cat search criteria: ") criteria = sys.stdin.readline().strip().lower() # set a flag indicating that no records have been printed printed = False # Traverse through the main cat dataset for cat in cats: # traverse through an individual cat record for characteristic in cat: # If the search criteria is found within a characteristic, print the record if criteria in characteristic: # If no records printed yet, print the title if not printed: print "Order Family Genus Species Common names and average weight" # Format the output as per the specifications print "%s %s %s %s %s, %s" % (cat[1].capitalize(), cat[2].capitalize(), cat[3].capitalize().ljust(12), cat[4].capitalize().ljust(17), cat[0].title(), cat[5]) printed = True break # If no records printed, print appropriate message if not printed: print "No cats match your search criteria"