廣告

2015年1月31日 星期六

[python] BMI sample code

use BMI as sample.
this example will use:
math , class, flow control. def function, import src,




bmi.py
import bmiMethod


#read data from file
file = open('people.txt','r')
print 'the content is ',file.name

people = {}

for line in file.readlines():
   print 'read line:',line
   #rstrip = remove '\n'
   part = line.rstrip().split(' ')
   people[part[1]] = part

for key in people.keys():
        peolist = people.get(key)
        name    = peolist[1]
        height  = int(peolist[2])
        weight  = int(peolist[3])
        bmi = bmiMethod.getBmi(height,weight)
        print name,"'s bmi is ",bmi
        peolist.append(repr(bmi))
        people[key] = peolist
        print 'you are',bmiMethod.getRange(bmi)

f = open('people2.txt','w')
for key in people.keys():
 listp = people.get(key)
 str1 = ' '.join(listp)
 f.write(str1+"\n")

f.close()


bmiMethod.py

from __future__ import division

def getBmi(height , weight):
  print 'height = ',height, " weight = " ,weight
  hei2 = float(height/100)*float(height/100)
  bmi =float (weight/hei2)
  print 'bmi = ',bmi
  return bmi

def getRange(bmi):
  if bmi >= 24:
        return 'fat'
  elif bmi < 24 and bmi >= 19:
        return 'normal'
  else :
        return 'thin'


console
the content is  people.txt
read line: 1 lewis 183 70

read line: 2 leo 175 80

read line: 3 jim 170 60

read line: 4 7 170 80

read line: 5 fai 180 70

height =  183  weight =  70
bmi =  20.902385858
lewis 's bmi is  20.902385858
you are normal
height =  180  weight =  70
bmi =  21.6049382716
fai 's bmi is  21.6049382716
you are normal
height =  170  weight =  60
bmi =  20.7612456747
jim 's bmi is  20.7612456747
you are normal
height =  170  weight =  80
bmi =  27.6816608997
7 's bmi is  27.6816608997
you are fat
height =  175  weight =  80
bmi =  26.1224489796
leo 's bmi is  26.1224489796
you are fat
done


people.txt
1 lewis 183 70
2 leo 175 80
3 jim 170 60
4 7 170 80
5 fai 180 70



people2.txt
1 lewis 183 70 20.902385858042937
5 fai 180 70 21.604938271604937
3 jim 170 60 20.761245674740486
4 7 170 80 27.68166089965398
2 leo 175 80 26.122448979591837

沒有留言:

張貼留言