no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | teaching:progappchim:solvents_data_class [2012/11/30 13:39] (Version actuelle) – créée villersd | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Utilisation d'une " | ||
+ | |||
+ | On peut utiliser la structure de classe pour créer une " | ||
+ | |||
+ | < | ||
+ | # | ||
+ | # -*- coding: utf-8 -*- | ||
+ | |||
+ | # a solvent database using a list of class instances | ||
+ | # a modification of: http:// | ||
+ | # EU tested with Python 2.4 | ||
+ | # | ||
+ | # modification UMONS - cours programmation python - 2007-2012 | ||
+ | # | ||
+ | |||
+ | import operator | ||
+ | |||
+ | class Solvent(object): | ||
+ | """ | ||
+ | def __init__(self, | ||
+ | self.name = name | ||
+ | # 9999 --> not applicable | ||
+ | self.bp = bp # boiling point degC | ||
+ | self.mp = mp # melting point degC | ||
+ | self.fp = fp # flash point degC | ||
+ | self.dy = dy # density g/ml | ||
+ | self.de = de # dielectric constant | ||
+ | self.nr = nr # refractive index | ||
+ | self.mu = mu # dipole moment in Debye | ||
+ | self.so = so # solubility in water (g/100g water) --> 9000 = miscible | ||
+ | self.fo = fo # chemical formula | ||
+ | |||
+ | def table(solvent_list): | ||
+ | """ | ||
+ | title_str = " | ||
+ | data_str | ||
+ | print " | ||
+ | print title_str % (" | ||
+ | for solvent in solvent_list: | ||
+ | print data_str % (solvent.name, | ||
+ | print " | ||
+ | print "9999 --> not applicable; 9000 --> miscible" | ||
+ | |||
+ | |||
+ | def table_bp(solvent_list, | ||
+ | """ | ||
+ | title_str = " | ||
+ | data_str | ||
+ | print " | ||
+ | print title_str % (" | ||
+ | for solvent in solvent_list: | ||
+ | if solvent.bp > bp_limit: | ||
+ | print data_str % (solvent.name, | ||
+ | print " | ||
+ | print "9999 --> not applicable; 9000 --> miscible" | ||
+ | |||
+ | | ||
+ | # make a list of class Solvent instances | ||
+ | # also adds all the data/ | ||
+ | # data order = name, boiling point, melting point, flash point, density, dielectric constant, | ||
+ | # refractive index, dipole moment in Debye, solubility in water (g/100g water), chemical formula | ||
+ | # 9999 --> not applicable; 9000 --> miscible | ||
+ | solvent_list = [] | ||
+ | solvent_list.append(Solvent(" | ||
+ | solvent_list.append(Solvent(" | ||
+ | solvent_list.append(Solvent(" | ||
+ | solvent_list.append(Solvent(" | ||
+ | solvent_list.append(Solvent(" | ||
+ | solvent_list.append(Solvent(" | ||
+ | # | ||
+ | solvent_list.append(Solvent(" | ||
+ | solvent_list.append(Solvent(" | ||
+ | solvent_list.append(Solvent(" | ||
+ | solvent_list.append(Solvent(" | ||
+ | solvent_list.append(Solvent(" | ||
+ | # got the drift, add more solvents here ... | ||
+ | |||
+ | |||
+ | print "Sort the solvent_list by name ..." | ||
+ | solvent_list.sort(key=operator.attrgetter(' | ||
+ | # ... now show a table of the solvent_list | ||
+ | table(solvent_list) | ||
+ | |||
+ | |||
+ | |||
+ | print "Sort the solvent_list by melting point ..." | ||
+ | solvent_list.sort(key=operator.attrgetter(' | ||
+ | # ... now show a table of the solvent_list | ||
+ | table(solvent_list) | ||
+ | |||
+ | |||
+ | |||
+ | print "Sort the solvent_list by boiling point ..." | ||
+ | solvent_list.sort(key=operator.attrgetter(' | ||
+ | # ... now show a table of the solvent_list | ||
+ | table(solvent_list) | ||
+ | |||
+ | |||
+ | |||
+ | # ajouter suivant d' | ||
+ | |||
+ | bp_limit = 75 | ||
+ | print "Show only solvents boiling higher than %0.1f degC:" % bp_limit | ||
+ | # show a boiling point restricted table | ||
+ | table_bp(solvent_list, | ||
+ | |||
+ | # on peut chercher un solvant de densité supérieure à l'eau, mais | ||
+ | # peu soluble ou insoluble (solubilité < 0.05 par exemple) | ||
+ | |||
+ | |||
+ | </ | ||