Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- # classes definitions
- class CollectiveFarm:
- def __init__(self, name):
- self.name = name
- self.species = []
- class Specie:
- def __init__(self, name):
- self.name = name
- # creating species
- Species = {
- 'Rye' : Specie('Rye'),
- 'Teff' : Specie('Teff'),
- 'Oat' : Specie('Oat'),
- 'Rice' : Specie('Rice')
- }
- # creating farms
- Minsk = CollectiveFarm('Minsk')
- Yobastan = CollectiveFarm('Yobastan')
- Yoptastan = CollectiveFarm('Yoptastan')
- # adding species to farms
- Minsk.species = [ Species['Rye'], Species['Teff'], Species['Oat'] ]
- Yobastan.species = [ Species['Rye'], Species['Teff'], Species['Rice'] ]
- Yoptastan.species = [ Species['Rye'], Species['Teff'] ]
- # adding farms
- Farms = [Minsk, Yobastan, Yoptastan]
- # main program
- def main():
- common_species = Farms[0].species # using first farm as init value
- print('Farms: ')
- for farm in Farms:
- # printing all farms for user
- print(farm.name)
- # replacing common_species with a intersetion of farm.species
- # this is logically equal to comparing set(common_species) & set(farm.species), which gives uniqes
- # each loop we'll throw out species that not being common to either previous filtering or current one
- common_species = set(common_species).intersection(farm.species)
- # printig all species for user
- print('\n')
- print('Species:')
- for name, specie in Species.items():
- print(specie.name)
- # printing FILTERED common species
- # should only contain species that's been found in all farms
- print('\n')
- print('Common species:')
- for specie in common_species:
- print(specie.name)
- # part2, display species for specific farm
- print('\n')
- # getting user input
- farmid = input('Enter farm name or farm index to display species: ')
- try:
- # we expect user typed integer, try to convert it to int index
- farmid = int(farmid)
- farm = Farms[farmid]
- except ValueError:
- # otherwise try to directly select farm from list
- try:
- farm = [_ for _ in Farms if _.name == farmid][0]
- except IndexError:
- print('%s not found in farms' % farmid)
- sys.exit()
- # displaying selcted farm species
- print('%s farm species' % farm.name)
- for specie in farm.species:
- print(specie.name)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement