README

  

 # README.md #

 day001-work-2

         @南非波波

 功能实现:多级菜单展示

 流程图:
![](http://i.imgur.com/VTPPhZU.jpg) 程序实现: 1.文件说明:
main.py:主程序入口
welcome.py:程序首页展示内容
citylist.py:程序的字典内容
checkinput.py:检查用户输入是否符合规定,设置二三级菜单展示函数
2.设置功能函数:
welcome.WelcomeInfo():首页函数,调用checkinput.CheckInputOne(Choose)函数,根据用户输入返回相应值或者调用相应函数
welcome.GoBack(Choose):返回函数,该函数最终设计目标实现多级返回,但目前只实现返回到首页
checkinput.CheckInputOne(Choose):函数判断用户在第一次输入的值是否异常,根据用户输入情况进行相应值返回或者调用相应函数
checkinput.InputIfOne(Choose):调用checkinput.ShowInfo(Area)函数展示地区下面的省份,并且多层循环、遍历字典、列表展示二三层菜单。期间调用checkinput.ChooseInputTwo(Choose)函数进行用户输入的判断,并返回True|Flase值.
3.主函数入口:
import welcome
#main
if __name__ =="__main__":
welcome.WelcomeInfo() 代码地址: https://github.com/swht/projects/tree/master/day01/work-2 博客地址: http://www.cnblogs.com/songqingbo/p/5091830.html

README

流程图:

  

程序代码:

main.py

  

 #!/usr/local/env python3
'''
Author:@swht
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import welcome #main
if __name__ =="__main__":
welcome.WelcomeInfo()

main.py

welcome.py

  

 #!/usr/local/env python3
'''
Author:@swht
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import citylist
import checkinput
import sys,time
#登录欢迎界面
def WelcomeInfo():
for i in range(0,3):
Choose = input('''
===================================================
欢迎来到中国!
===================================================
[11]华北地区 [12]东北地区 [13]华东地区 [14]华中地区
[15]华南地区 [16]西南地区 [17]西北地区 [18]特别行政区
[19]退出
请选择相应指令:''').strip()
checkinput.CheckInputOne(Choose)
GoBack("地区") #错误次数已达3,程序退出
def GoBack(Choose):
if Choose == "地区":
print("你的输入错误次数已达3次,系统将退出!")
time.sleep(1)
sys.exit(1)

welcome.py

citylist.py

  

 #!/usr/local/env python3
'''
Author:@swht
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
''' CityList ={
"华北地区":{
"北京市":['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区','密云县','延庆县'],
"天津市":['和平区', '河东区', '河西区', '南开区', '河北区', '红桥区', '塘沽区', '汉沽区', '大港区', '东丽区', '西青区', '津南区','北辰区', '武清区', '宝坻区', '宁河县', '静海县', '蓟县'],
"河北省":['石家庄市','秦皇岛市'],
"山西省":['太原市','大同市'],
"内蒙古自治区":['呼和浩特市','包头市']
},
"东北地区":{
"辽宁省":["铁岭市","阜新市","朝阳市","沈阳市"],
"吉林省":['长春市','吉林市','辽源市'],
"黑龙江省":['哈尔滨市','齐齐哈尔市']
},
"华东地区":{
"上海市":["浦东新区","长宁区","宝山区","青浦区"],
"江苏省":['南京市','徐州市'],
"浙江省":['杭州市','宁波市'],
"安徽省":['合肥市','淮南市'],
"福建省":['福州市','厦门市'],
"江西省":['南昌市','景德镇市'],
"山东省":["济南市","青岛市","潍坊市","德州市"]
},
"华中地区":{
"河南省":['郑州市','洛阳市'],
"湖北省":['武汉市','荆门市'],
"湖南省":['长沙市','株洲市']
},
"华南地区":{
"广东省":['广州市','深圳市'],
"海南省":['海口市','三亚市','五指山市', '琼海市', '儋州市', '文昌市', '万宁市', '东方市'],
"广西壮族自治区":['南宁市','桂林市']
},
"西南地区":{
"重庆市":['渝中区', '大渡口区', '江北区', '沙坪坝区', '九龙坡区', '南岸区', '北碚区', '万盛区', '双桥区', '渝北区'],
"四川省":['成都市','自贡市'],
"贵州省":['贵阳市','遵义市'],
"云南省":['昆明市','保山市'],
"西藏自治区":['拉萨市','昌都地区']
},
"西北地区":{
"陕西省":['西安市','宝鸡市'],
"甘肃省":['兰州市','天水市'],
"青海省":['西宁市','玉树州'],
"宁夏回族自治区":['银川市','石嘴山市'],
"新疆维吾尔自治区":['乌鲁木齐市','克拉玛依市']
},
"特别行政区":{
"香港特别行政区":['中西区', '东区', '九龙城区', '观塘区', '南区', '深水埗区', '黄大仙区', '湾仔区', '油尖旺区', '离岛区', '葵青区', '北区', '西贡区', '沙田区', '屯门区', '大埔区', '荃湾区', '元朗区'],
"澳门特别行政区":[],
"台湾省":['台北市', '高雄市', '基隆市', '台中市', '台南市', '新竹市', '嘉义市']
}
}

citylist.py

checkinput.py

  

 #!/usr/local/env python3
'''
Author:@swht
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import welcome,citylist
import sys,time #一级菜单输入字段判断
def CheckInputOne(Choose):
if Choose == '':
print("指令不能为空,请输入正确指令!")
else:
if Choose.isdigit():
Choose = int(Choose)
if Choose >= 11 and Choose <= 19:
InputIfOne(Choose)
else:
print("你输入的指令已超出范围,请按照系统指令进行输入!")
else:
print("请输入正确的指令,指令为整数型数字!") def InputIfOne(Choose):
if Choose == 11:
ShowInfo("华北地区")
if Choose == 12:
ShowInfo("东北地区")
if Choose == 13:
ShowInfo("华东地区")
if Choose == 14:
ShowInfo("华中地区")
if Choose == 15:
ShowInfo("华南地区")
if Choose == 16:
ShowInfo("华南地区")
if Choose == 17:
ShowInfo("西北地区")
if Choose == 18:
ShowInfo("特别行政区")
if Choose == 19:
print("欢迎下次再来中国!")
time.sleep(1)
sys.exit(0) #二级、三级菜单输入字段判断
def ChooseInputTwo(Choose):
if Choose == '':
print("指令不能为空,请输入正确指令!")
else:
if Choose.isdigit():
return True
elif Choose == 'back' or Choose == 'Back' or Choose == 'BACK':
return False
else:
# print("你输入的指令已超出范围,请按照系统指令进行输入!")
pass
#二级、三级菜单显示
def ShowInfo(Area):
#显示省份
for i in range(0,3): #允许用户最大错误次数3次
print('''
===================================================
欢迎来到%s!
==================================================='''% Area)
# citylist.CityList[Area].keys() 获取地区里面的省份键值
Count = 0
for index,key in enumerate(citylist.CityList[Area].keys()): #python3中citylist.CityList[Area].keys()输出的是dict_keys对象
Count += 1
print("\t\t\t序号:%s\t省份:%s" % (index,key))
Choose1 = input("\t\t请选择相应序号进入相应省份!返回上级菜单[Back]:").strip()
ChooseInputTwo(Choose1)
if ChooseInputTwo(Choose1) == True:
Choose1 = int(Choose1)
if Choose1 >= 0 and Choose1 < Count:
#python3中将dict_keys转换成列表再做索引
#python2中dict.keys()的输出对象就是一个列表,可以直接进行索引操作
#KeyOne = citylist.CityList[Area].keys()[Choose1]
KeyOne = list(citylist.CityList[Area].keys())[Choose1] #获取省份keys
#显示城市
for i in range(0,3): #允许用户最大错误次数3次
Count = 0
print('''
===================================================
欢迎来到%s!
===================================================''' % KeyOne)
for index,key in enumerate(citylist.CityList[Area][KeyOne]):
Count += 1
print("\t\t\t序号:%s\t城市地区:%s" % (index,key))
Choose2 = input("\t\t请选择相应序号进入相应城市地区!返回上级菜单[Back]:").strip()
ChooseInputTwo(Choose2)
if ChooseInputTwo(Choose2) == True:
Choose2 = int(Choose2)
if Choose1 >= 0 and Choose2 < Count:
KeyTwo = citylist.CityList[Area][KeyOne][Choose2] #获取地区名称
print("\t\t哈哈,到头了!\t\t%s" % KeyTwo)
print("\t\t穿越到上一级菜单喽......")
time.sleep(1)
break
else:
print("你输入的指令不在范围内!")
time.sleep(1)
continue
elif ChooseInputTwo(Choose2) == False:
print("\t\t系统将返回上一级菜单!")
time.sleep(1)
break #跳出当前一级循环
else:
print("你是输入有误,请重新输入!")
time.sleep(1)
continue
print("你的输入次数已达三次,系统返回上一级菜单!")
else:
print("你输入的指令不在范围内!")
time.sleep(1)
continue #跳出当前循环
elif ChooseInputTwo(Choose1) == False:
welcome.WelcomeInfo() #首页
else:
print("你的输入有误,请重新输入!")
print("你的输入次数已达三次,系统将返回首页!")
welcome.WelcomeInfo()

checkinput.py

github更新地址:

  https://github.com/swht/projects/tree/master/day01/work-2

s12-day01-work02 python多级菜单展示的更多相关文章

  1. Python多级菜单

    作业2:多级菜单三级菜单可依次选择进入各子菜单所需新知识点:列表.字典 1.流程图 2.登录界面,输入对应索引 #!/usr/bin/env python3 # -*- coding:utf-8 -* ...

  2. python 多级菜单 纯循环与分支

    源代码: dic1 = {'湖南':{'衡阳':{'珠晖区':'湖南工学院'},'湘潭':{'晖晖':'啦啦'}}, '北京':{'朝阳': {"德玛:北京大学"}}}print( ...

  3. flex 布局 实现电商网页菜单的多级分类展示

    用flex,实现多级菜单分类展示,这里记录一下,方便以后查阅. 效果展示如下: 跟上面floor的设计差不多,鼠标hover全部商品分类的时候,将下拉列表展示在指定区域,这个类似鼠标悬浮商品图片期待上 ...

  4. django权限二(多级菜单的设计以及展示)

    多级权限菜单设计级标题栏 我们现在只有数据展示,要进入其他url还需要手动的输入路径,非常的麻烦,所以我们要设计 一个导航栏以及侧边多级菜单栏,这个展示是通过stark组件的设计的增删改查页面,而 每 ...

  5. python作业设计:多级菜单,并可依次进入各级子菜单

    '''作业三:多级菜单 三级菜单 可依次选择进入各子菜单 所需新知识点:列表.字典 ''' data = { "北京":{ "昌平":{ "沙河&qu ...

  6. Python练习----多级菜单

    多级菜单要求:      1.三级菜单          2.可依次选择进入各子菜单      3.可以返回上一层      4.输入'q'可以退出   脚本: zone = { '北京' : { ' ...

  7. Python作业之多级菜单

    作业之多级菜单 菜单实现要求: 1. 列出菜单选择供选择 2. 选择对应内容进入下一级菜单 3. 任何时候都可以选择退出程序或返回上一级菜单 具体代码如下: goods = {'华为':{'A系':{ ...

  8. Python简单实现多级菜单

    # -*- coding: utf-8 -*- # @Time : 2018-06-01 13:40 # @Author : 超人 # @Email : huxiaojiu111@gmail.com ...

  9. Python基础-小程序练习(跳出多层循环,购物车,多级菜单,用户登录)

    一. 从第3层循环直接跳出所有循环 break_flag = False count = 0 while break_flag == False: print("-第一层") wh ...

随机推荐

  1. [LeetCode] 329. Longest Increasing Path in a Matrix ☆☆☆

    Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...

  2. SQL语句(十五)视图

    视图 实际上是一个查询语句, 如果将子查询保存为视图, 就可以将子查询的结果当作数据表使用 从而来简化查询语句 引言 例1 查询参加"数据库技术"课程的考试的学生学号.姓名.班级. ...

  3. 使用subprocess.Poen注意事项

    学习使用python已经有四个月了,subprocess这个执行linux中shell命令的函数已经用过无数次了,踩到的坑也有几个,写出来分享一下,欢迎大家拍砖头. 1.shell命令中若有管道,一定 ...

  4. Table of Contents - Python 2.x

    异常 异常类的继承关系 日志 标准日志模块 Hello World Logging Configuration

  5. 11个实用的CSS学习工具[转载收藏]

    1. 盒子模型的幻灯片 通过3D转换效果产生的互动的幻灯片.按向左或向右箭头键切换,全屏观看会有更好的效果. 2. CSS Diner 通过一个简单的小游戏让你学习CSS selector,输入正确的 ...

  6. 使用JavaScript 修改浏览器 URL 地址栏

    现在的浏览器里,有一个十分有趣的功能,你可以在不刷新页面的情况下修改浏览器URL;在浏览过程中.你可以将浏览历史储存起来,当你在浏览器点击后退按钮的时候,你可以冲浏览历史上获得回退的信息,这听起来并不 ...

  7. 用JS获得QQ号码的昵称,头像,生日

    有一个网址,可以返回我们要的内容. http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=指定QQ号码 将会返回下列内容: _Callbac ...

  8. 俞昆20155335《网络对抗》MSF基础应用

  9. 20155201 2016-2017-2 《Java程序设计》第六周学习总结

    20155201 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第十章 输入/输出 字节输入类: Java将输入/输出抽象化为串流,数据有来源及目的地,衔接 ...

  10. sklearn_k邻近分类

    # K邻近分类#--------------------------------# coding:utf-8 import pandas as pd from sklearn.neighbors im ...