В этом коде первая часть строки принимается в качестве имени, затем перебирает разные строки и выводит имя, ИМТ и его категорию. Как мне сократить этот сценарий или очистить его, чтобы сделать его лучше и эффективнее? Возможно, есть какая-нибудь функция, которая была бы полезна в этой ситуации?
import sys
n = 1
desirable = 0
borderline = 0
high = 0
thislist = sys.argv
thislist.pop(0)
def calcbmi(height,weight):
bmi=float((weight/(height*height))*703)
actbmi = round(bmi,2)
return actbmi
def getcategory(BMI):
if BMI=18.5 and BMI25 and BMI=30:
x='obesity'
return x
for lines in thislist:
ind = lines.find(',')
name = lines[:ind]
lines = lines[ind+1:]
ind = lines.find(',')
age = lines[:ind]
lines = lines[ind+1:]
ageint = int(age)
ind = lines.find(',')
cat = lines[:ind]
lines = lines[ind+1:]
if cat == "high":
high +=1
if cat == "desirable":
desirable +=1
if cat == "borderline":
borderline +=1
print("Desirable count:",desirable)
print("High count:",high)
print("Borderline count:",borderline)
for lines in thislist:
ind = lines.find(',')
name = lines[:ind]
lines = lines[ind+1:]
ind = lines.find(',')
age = lines[:ind]
lines = lines[ind+1:]
ageint = int(age)
ind = lines.find(',')
cat = lines[:ind]
lines = lines[ind+1:]
ind = lines.find(',')
height = int(lines[:ind])
lines = lines[ind+1:]
ind = lines.find(',')
weight = int(lines[:4])
lines = lines[ind+1:]
BMI = calcbmi(height,weight)
actualcat = getcategory(BMI)
print(name+':',str(round(BMI,2))+',',actualcat)
Подробнее здесь: https://stackoverflow.com/questions/786 ... ugh-a-list