Python数学建模:女孩穿多高的高跟鞋看起来最美

问题的提出

很多女孩子都喜欢穿高跟鞋,可以秀出自己的身材和体型,更能吸引众多的眼球,那么多高的高跟鞋才能适合自己呢?
对于人体来说,当肚脐以下的长度与身高的比值为0.618时,体型是最优美的。这么说是有依据的,古希腊女神维纳斯塑像的躯干与身高比恰为0.618,女神维纳斯可是优美体型的代表。

可惜的是,一般人肚脐以下的长度与身高之比都低于0.618,大约只有0.58至0.60左右。如果女孩通过穿高跟鞋,将肚脐以下的长度与身高之调整为0.618,此时高跟鞋的高度就是最合适的。

建立数学模型

可以把人肚脐以下的长度称为下肢长度,人的整个身体的高度称为身高。假设当人的下肢长度与身高之比等于0.618时,人的体型最美。那么就会得出下面的公式:

下肢长度 / 身高 = 0.618

一般人的下肢长度和身高之比不可能满足上面的公式,需要对公式做调整。人体的身高不变,模型要调整下肢的长度,让下肢长度与身高之比等于0.618。如果设高跟鞋的高度为x,人的下肢长度为leg_height,身高位body_height,调整后的公式为:

(leg_height+x) / (body_height+x) = 0.618

下肢长度加上x后,人的身高也增加了x,因此身高也要加x。应用上面的公式可求得高跟鞋的高度x为:

x = (0.618 * body_height-leg_height) / 0.382

上面的公式就是我们要建立的数学模型,该数学模型根据人体的身高和下肢高度,求出高跟鞋的高度。

 

编写程序求解模型

求解模型需要用户输入人体的身高和下肢高度,身高和下肢的数据类型为浮点类型。

程序流程图如下:

(1)接收用户输入的身高和下肢高度;
(2)判断用户输入的是否是整型或小数;
(3)如果用户输入的不是整数或小数,输出提示信息,跳转到步骤(1);
(4)使用模型计算高跟鞋的高度;
(5)输出高跟鞋的高度;
(6)输出提示信息,提示信息为“输入N退出程序,其它继续”;
(7)等待用户的输入,如果用户输入N,程序结束,否则跳转到步骤(1)。

程序代码如下:

'''
程序文件:main.py
功能描述:女孩穿多高的高跟鞋看起来最美
代码编写时间:2020/04/30
'''
# 定义判断函数
# 判断用户输入的是否是整数或小数
def isnumber(instr):
# 遍历instr
for ch in instr:
# ch是否是数字或小数点
if ch.isdigit() or ch == '.':
continue;
else:
# instr包含其它字符
return False
return True
# 程序入口
if __name__ == '__main__':
while(True):
# 接收用户输入的身高
body_height = input("身高(如162.8):")
# 身高是否是整数或小数
if isnumber(body_height):
# 接收用户输入的下肢高度
leg_height = input("下肢高度(如105):")
# 下肢高度是否是整数或小数
if isnumber(leg_height):
# 用模型计算高跟鞋的高度
shoes_height = (0.618*float(body_height)-float(leg_height))/0.382
# 输出高跟鞋的高度
print("高跟鞋的合理高度为:%.2f" % (shoes_height))
else:
print("下肢高度输入错误")
else:
print("身高输入错误")
# 程序继续或退出
temp = input("输入N退出程序,其它继续:")
# 判断temp的内容
if temp == "N":
break;

代码解读
程序定义了函数isnumber,用于判断传入的字符串是否是由数字或小数点组成,简化起见,函数没有判断小数点的位置错误。
函数遍历传入的instr,在遍历过程中,判断每个字符是否是数字或小数点,如果不是数字或小数点,函数返回False,instr遍历完后,成函数返回True。
主体代码使用嵌套条件结构,先后判断用户输入的身高和下肢高度是否正确,如果输入正确,用模型计算高跟鞋的高度并输出。然后代码提示用户输入N可退出程序,其它可继续。
模型校验
以身高160CM,下肢长为96CM的女性为例,其所穿鞋的鞋跟高度与体型优美程度的关系可由下表说明: