The following Python code works correctly; but I can't help but wonder if
my for loop is better implemented as something else: a list comprehension
or something else more Pythonic.
My goal here is not efficiency of the code, but efficiency in my Python
thinking; so I'll be thinking, for example, "ah, this should be a list
comprehension" instead of a knee-jerk reaction to use a for loop.
Comments?
The point of the code is to take a sequence of objects, each object
representing an amount of water with a given mass and temperature, and to
return another object that represents all the water ideally combined. The
formulae for the combined mass and temp are respectively:
combined mass = M1 + M2 + M3 (duh)
combined temp = ((M1*T1) + (M2*T2) + (M3*T3)) / (M1 + M2 + M3)
Here's my code:
--------------------
class Water:
def __init__(self, WaterMass, WaterTemperature):
self.mass = WaterMass
self.temperature = WaterTemperature
def __repr__(self):
return ("%.2f, %.2f" % (self.mass, self.temperature))
def CombineWater(WaterList):
totalmass=0
numerator = 0; denominator = 0
for WaterObject in WaterList:
totalmass += WaterObject.mass
numerator += WaterObject.mass * WaterObject.temperature
return Water(totalmass, numerator/totalmass)
--------------------
Example use:
--------------------
w1 = Water(50,0)
w2 = Water(50,100)
w3 = Water(25,50)
print CombineWater((w1,w2,w3))
--------------------
prints, as expected: 125.00, 50.00
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor