# 1.创建并输出菜单, 菜单是不可变的. 所以使用元组
# menus = ("1, 录入", "2, 查询", "3, 删除", "4, 修改", "5, 退出") # 存储用户的信息 id: {'name':'名字', 'weight':体重, 'height':身高}
# 例如:目前有两个用户信息:1. 汪峰, 2. 章子怡
# 存储结构:
# {
# 1:{'name':'汪峰', 'weight':80, 'height':1.8, 'BMI':24.7},
# 2:{'name':'章子怡', 'weight':50, 'height':1.65, 'BMI':18.4}
# }
# bodies = {}
# body_id = 1 # 编号从1开始
# 体质指数(BMI)= 体重(kg)÷ (身高(m) x 身高(m))
# 体重的单位: KG
# 身高的单位: m
# 需求:首先。打印菜单,然后用户输入选择的菜单项
# 输入1:进入录入环节。用户需要录入:名字,身高,体重.
# 由程序计算出BMI指数. 保存到bodies字典中. 第一个用户的id是1, 第二个是2, 以此类推
# 录入完毕后. 提示用户是否继续录入. 如果选择是, 则继续进行录入, 直到用户输入否. 则返回到主菜单
# 输入2: 进入查询环节, 提示用户输入要查询的人的id. 如果不存在,给与提示, 如果存在. 则显示出该用户的全部信息(名字,身高,体重,BMI)
# 然后提示用户是否继续查询. 如果选择是, 继续进行查询, 直到用户输入否, 返回主菜单
# 输入3: 进入删除环节, 提示用户输入要删除的人的id, 如果id不存在, 给与提示, 如果存在, 则执行删除操作. 并提示删除成功.
# 然后提示用户是否继续删除, 如果是, 继续让用户选择要删除的id, 直到用户输入否, 返回主菜单
# 输入4: 进入修改环节, 首先让用户输入要修改的人的id, 根据id查找用户信息, 如果不存在, 给与提示, 如果存在, 将用户原信息进行打印,
# 然后提示用户输入新的名字, 身高, 体重. 由程序重新计算BMI指数. 并将新的信息保存在bodies中. 同时给用户展示新的用户信息
# 然后提示用户是否继续修改, 如果是, 则继续要求用户输入id信息. 直到用户输入否, 返回主菜单.
# 输入5: 程序退出.
# 输入其他任何内容. 都予以提示不合法. 让用户重新进行输入
menus = ("1, 录入", "2, 查询", "3, 删除", "4, 修改", "5, 退出")

bodies = {}
body_id = 1 while 1:
for item in menus:
print(item)
user_section = input('请输入您要选择的菜单项:')
if user_section == '':
flag = True
while flag:
dic = {}
user_input_name = input('请输入您的名字:')
while 1:
user_input_high = input('请输入您的身高:')
if not user_input_high.startswith(".") and not user_input_high.endswith(".") and user_input_high.count(".") == 1:
break
else:
print("请输入正确的格式")
user_input_high = float(user_input_high)
while 1:
user_input_weight = input('请输入您的体重:')
if not user_input_weight.startswith(".") and not user_input_weight.endswith(
".") and user_input_weight.count(".") == 1 or user_input_weight.isdigit():
break
else:
print("请输入正确的格式")
user_input_weight = float(user_input_weight)
BMI = user_input_weight / (user_input_high ** 2)
dic['name'] = user_input_name
dic['height'] = user_input_high
dic['weight'] = user_input_weight
dic['BMI'] = BMI
bodies[body_id] = dic
body_id += 1
while 1:
user_section_a = input('是否继续输入(是/否):')
if user_section_a == '是':
break
elif user_section_a == '否':
print(bodies)
flag = False
break
else:
print("请按照规定输入") elif user_section == '':
flag2 = True
while flag2:
user_cha = input('输入你想查询的人的id:')
if not user_cha.isdigit():
print('输入错误,请重新输入')
else:
if int(user_cha) in bodies:
print(bodies[int(user_cha)])
else:
print('用户不存在') while 1:
user_section_b = input('是否继续输入(是/否):')
if user_section_b == '是':
break
elif user_section_b == '否':
flag2 = False
break
else:
print("请按照规定输入") elif user_section == '':
flag3 = True
while flag3:
while 1:
user_shan = input('请输入你要删除的人的id:')
if not user_shan.isdigit():
print("非法输入,请重新输入")
else:
break
user_shan = int(user_shan)
if user_shan in bodies:
bodies.pop(user_shan)
body_id -= 1
print(bodies)
else:
print("用户不存在") user_section_b = input('是否继续输入(是/否):')
if user_section_b == '是':
break
elif user_section_b == '否':
flag3 = False
break
else:
print("请按照规定输入")
elif user_section == '':
flag4 = True
while flag4:
while 1:
user_section_gai = input('请输入你要修改人的id:')
if not user_section_gai.isdigit():
print("非法输入,请重新输入")
else:
break
user_section_gai = int(user_section_gai)
if user_section_gai in bodies:
print('您要求改的内容为%s' % bodies[user_section_gai])
print('请输入修改之后的信息')
gai_name = input("Name:")
while 1:
gai_high = input("High:")
if not gai_high.startswith(".") and not gai_high.endswith(".") and gai_high.count(".") == 1:
break
else:
print("输入非法")
gai_high = float(gai_high)
while 1:
gai_weight = input("weight:")
if not gai_weight.startswith(".") and not gai_weight.endswith(".") and gai_weight.count(".") == 1 or gai_weight.isdigit():
break
else:
print("非法输入")
gai_weight = float(gai_weight)
gai_BMI = gai_weight / (gai_high ** 2)
bodies[user_section_gai] = {'name': gai_name, 'weight': gai_weight, 'high': gai_high, 'BMI': gai_BMI}
else:
print("用户不存在")
while 1:
user_section_b = input('是否继续输入(是/否):')
if user_section_b == '是':
break
elif user_section_b == '否':
flag4 = False
break
else:
print("请按照规定输入")
elif user_section == '':
break
else:
print('非法输入')

2018-07-09  14:07:42


 “继续奔跑 输掉一切也不要输掉微笑” 
 

----------BMI指数小程序----------的更多相关文章

  1. 计算BMI指数的小程序

    小明身高1.75,体重80.5kg.请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数: 低于18.5:过轻 18.5-25:正常 25-28:过重 28-32:肥胖 高 ...

  2. Python的安装与小程序的编写

    Python的安装 在此之前,我完全不了解Python,为了完成任务,在慌忙之中了解了一下Python,通过百度,一步步安装好Python 过程 1.从官网中找到下载菜单并下载最新版本 2.双击pyt ...

  3. Python的安装及小程序练习

    Python 1.Python的安装教程 (1)进入Python官网 (2)双击Python-3.6.4.exe安装程序,勾选Add Python 3.6 to PATH (3)选择自定义安装. (4 ...

  4. 微信小程序——智能小秘“遥知之”源码分享(语义理解基于olami)

    微信小程序智能生活小秘书开发详解 >>>>>>>>>>>>>>>>>>>>> ...

  5. 微信小程序初识

    http://lib.csdn.net/article/wechat/46742 微信小程序的前途和定位有什么疑惑?点进去 简单先记几个印象名词:流量入口,线下是重点,“即用即走”适合低频工具类产品. ...

  6. 美团小程序框架mpvue蹲坑指南

    美团小程序框架mpvue(花名:没朋友)蹲坑指南 第一次接触小程序大概是17年初,当时小程序刚刚内侧,当时就被各种限制折腾的死去活来的,单向绑定, 没有promise,请求数限制,包大小限制,各种反人 ...

  7. 微信小程序 TOP100 榜单

    8 月 12 日,阿拉丁数据统计平台发布了国内第一份小程序 TOP100 榜单,摩拜单车成为全榜第一! 该榜单数据来源于阿拉丁小程序统计平台检测.合作.如有赞等,并经过企业电话调研和实地走访企业等校准 ...

  8. 微信小程序之---- 数据处理

    exports 关键字      .wxs 通过该属性,可以对外共享本模块的私有变量与函数   使用步骤 1. 在 .wxs后缀文件 exports定义参数 var foo = "'hell ...

  9. 微信小程序,个人开发者创业新平台

    在移动互联网世界,微信无小事,微信的事,是整个创业圈的事.经过一年多的酝酿,2017年1月9日,微信小程序发布了.发布伊始,无疑是对整个业界注入一剂兴奋剂,整个微信的生态圈的企业和个人开发者,都跃跃欲 ...

随机推荐

  1. selenium + python自动化测试unittest框架学习(五)webdriver的二次封装

    因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...

  2. leetcode 121. Best Time to Buy and Sell Stock 、122.Best Time to Buy and Sell Stock II 、309. Best Time to Buy and Sell Stock with Cooldown

    121. Best Time to Buy and Sell Stock 题目的要求是只买卖一次,买的价格越低,卖的价格越高,肯定收益就越大 遍历整个数组,维护一个当前位置之前最低的买入价格,然后每次 ...

  3. deque详解

    deque是double-ended queue的简称,deque和vector几乎上是一样的,使用的非常少,定义在<deque>头文件里: deque和vector的区别在于: 1)de ...

  4. Java中使用OpenSSL生成的RSA公私钥

    RSA是什么:RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力的 ...

  5. PAT——1033. 旧键盘打字

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在2行中分别给出坏掉的那些键.以及应该输入的文 ...

  6. MongoDB简易

    一   安装 1.下载 $ brew install mongodb 2.启动 $ mongod --config /usr/local/etc/mongod.conf 3.连接 $ mongo 二 ...

  7. SQL-还原数据库,数据库提示正在还原中的处理办法

    还原数据库时,提示还原成功,可是数据库列表中该数据库显示正在还原中: 执行此命令即可: RESTORE DATABASE EnterPriseBuilding WITH RECOVERY 1. 至少有 ...

  8. iOS10 语音播报填坑详解(解决串行播报中断问题)

    iOS10 语音播报填坑详解(解决串行播报中断问题) 在来聊这类需求的解决方案之前,咱们还是先来聊一聊这类需求的真实使用场景:语音播报.语音播报需求运用最为广泛的应该是收银对账了,就类似于支付宝.微信 ...

  9. winfroms更换皮肤

    一.添加控件lrisSkin.dll 然后把继承的窗体更换成别人做好的窗体类 能达到换肤的效果     二. 全部源代码就一行: skinEngine1.SkinFile = "WaveCo ...

  10. 『ACM C++』 PTA 天梯赛练习集L1 | 027-028

    死亡周二,今天去看惊奇队长了!!!真的很佩服国外的后期特效大片技术,要是我们国内也能实现这样的技术能力就好了~ 羡慕max -------------------------------------- ...