convert Javascript code to Python and make sure you use chained map and filter as well.
https://book.pythontips.com/en/latest/map_filter.html
CODE BELOW IS IN JAVASCRIPT
let people = [
{name: "Amy", pounds_weight: 152, inches_height: 63},
{name: "Joe", pounds_weight: 120, inches_height: 64},
{name: "Tom", pounds_weight: 210, inches_height: 78},
{name: "Jim", pounds_weight: 180, inches_height: 68},
{name: "Jen", pounds_weight: 120, inches_height: 62},
{name: "Ann", pounds_weight: 252, inches_height: 63},
{name: "Ben", pounds_weight: 240, inches_height: 72},
];
//functions to convert pounds to kg and inches to meters
let poundstokg = (pounds)=> pounds * 0.453592;
let inchestometers = (inches)=> inches * 0.0254;
//add bmi function
let addbmi = (person) => {
person["bmi"] =
poundstokg(person["pounds_weight"])/(inchestometers(person["inches_height"])
* inchestometers(person["inches_height"]));
return person;
}
//checks if the person is overweight
let isOverweight = (person) => (person["bmi"] >= 25.0
&& person["bmi"] < 30);
//checks if the person is obese
let isObese = (person) => (person["bmi"] >= 30);
// array of overweight and obese people
let overweight_people =
people.map(addbmi).filter(isOverweight);
let obese_people = people.map(addbmi).filter(isObese);
console.log(overweight_people);
console.log(obese_people);
In Python you can not chain map and filter calls.
OUTPUT:

following is the implementation of the above code in python:
CODE:
class Person:
def __init__(self, name, weight, height, bmi=0):
self.name = name
# weight in pound
self.weight = weight
# height in inches
self.height = height
# initialize bmi to 0
self.bmi = bmi
def __str__(self):
return "[Name: " + self.name + ", BMI: " + str(self.bmi) + "]"
def pounds_to_kg(pounds):
return pounds * 0.453592
def inch_to_meter(inches):
return inches * 0.0254
def bmi(person):
return pounds_to_kg(person.weight)/pow(inch_to_meter(person.height), 2);
def add_bmi(person):
return Person(person.name, person.weight, person.height, bmi(person))
def is_overweight(person):
return 25.0 <= bmi(person) < 30
def is_obese(person):
return bmi(person) >= 30
if __name__ == "__main__":
people = [Person("Amy", 152, 63), Person("Joe", 120, 64), Person("Tom", 210, 78), Person("Jim", 180, 68), Person("Jen", 120, 62), Person("Ann", 252, 63), Person("Ben", 240, 72)]
overweight_people = list(map(add_bmi, people))
overweight_people = list(filter(is_overweight, overweight_people))
print("overweight People:")
for person in overweight_people:
print(person)
print("\n\nObese People:")
obese_people = list(map(add_bmi, people))
obese_people = list(filter(is_obese, obese_people))
for person in obese_people:
print(person)
convert Javascript code to Python and make sure you use chained map and filter as well....