一.作业需求:

1. 运行程序输出第一级菜单

2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单

3. 菜单数据保存在文件中

4. 让用户选择是否要退出

5. 有返回上一级菜单的功能

二.三级菜单读取文件内容:

{
'北京':{
"昌平":{
"沙河":["oldboy","test"],
"天通苑":["链家地产","我爱我家"]
},
"朝阳":{
"望京":["奔驰","陌陌"],
"国贸":{"CICC","HP"},
"东直门":{"Advent","飞信"},
},
"海淀":{},
},
'山东':{
"德州":{},
"青岛":{},
"济南":{}
},
'广东':{
"东莞":{},
"常熟":{},
"佛山":{},
},
}

三.流程图:

四.代码:(python3.6)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Even import sys file = open("三级菜单文本内容",'r',encoding='utf-8') # 打开3级菜单文本文件
f = file.read()
for line in f: # 读取文件中每行信息
file_str = str(f) # 将每行信息转成字符串格式
data = eval(file_str) # 字符串转成字典格式 def list(): # 定义读取字典中的key
for i in data:
print(i) def choose1(choice1): # 定义第一层选择
while choice1 != 'q': # 输入为q即退出程序
global one
one = choice1 # 定义全局变量one 使得其他函数可以调用
if choice1 in data:
for i2 in data[one]:
print("\t", i2) # 展示3级菜单中所选第一层下的第二层信息
choose2(input("请输入第二层:")) # 调用choose2函数,输入第二层信息
break
elif choice1 == 'b': # 输入b退出循环
break
else:
error = input("输入错误,请重新输入第一层:") # 输入内容不在第一层选项中
if error == 'q': # 输入q退出程序
sys.exit()
else: # 否则调用本函数
choose1(error)
else:
sys.exit() def choose2(choice2): # 定义第二层选择
while choice2 != 'q':
global two
two = choice2 # 定义全局变量two 使得其他函数可以调用
if choice2 in data[one]:
for i3 in data[one][two]:
print("\t\t", i3) # 展示3级菜单中所选第二层下的第三层信息
choose3(input("请输入第三层:")) # 调用choose3函数,输入第三层信息
break
elif choice2 == 'b': # 输入b退回第一层
list() # 调用list函数展示第一层信息
choose1(input("请输入第一层:"))
break
else:
error2 = input("输入错误,请重新输入第二层:") # 输入错误,重新输入
if error2 == 'q': # 输入q退出程序
sys.exit()
else:
choose2(error2) # 调用本函数
else:
sys.exit() def choose3(choice3): # 定义第三层选择
while choice3 != 'q':
global three
three = choice3 # 定义全局变量three 使得其他函数可以调用
if choice3 in data[one][two]:
for i4 in data[one][two][three]:
print("\t\t\t", i4) # 展示3级菜单中所选第三层下的第四层信息
choose4(input("最后一层,退回上一层请按‘b’,退出请按'q")) # 调用choose4函数,提示退出或退回
break
elif choice3 == 'b': # 输入为b退出
choose1(one)
break
else:
error3 = input("输入错误,请重新输入第三层:") # 输入错误,可以重新输入,q退出
if error3 == 'q':
sys.exit()
else:
choose3(error3) # 调用本函数
else:
sys.exit() def choose4(choice4): # 定义最后退出
while choice4 != 'q': # 输入q退出
if choice4 == 'b': # 输入b退回上一层
choose2(two)
else:
choose4(input("真的是最后一层了,退回上一层请按‘b’,退出请按'q'")) # 声明结束
else:
sys.exit() print("退出请按'q',返回上级菜单请按'b'") # 声明功能
list() # 调用list函数展示第一层信息
choose1(input("请输入第一层:")) # 主程序,开始运行

python作业:三级菜单(第一周)的更多相关文章

  1. python作业三级菜单day1(第一周)

    一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二三级菜单文 ...

  2. Python作业模拟登陆(第一周)

    模拟登陆:1. 用户输入帐号密码进行登陆2. 用户信息保存在文件内3. 用户密码输入错误三次后锁定用户 思路: 1. 用户名密码文件为passwd,锁定用户文件为lock 2. 用户输入账号密码采用i ...

  3. python之三级菜单

    python之三级菜单 要求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功 ...

  4. python打怪之路【第三篇】:利用Python实现三级菜单

    程序: 利用Python实现三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 coding: menu = { '北京':{ '朝阳':{ '国贸':{ 'CICC':{}, ' ...

  5. 软工作业-----Alpha版本第一周小结

            软工作业-----Alpha版本第一周小结   Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...

  6. Python学习之旅--第一周--初识Python

    一:Python是一种什么样的语言? 1.语言的分类: a.编译型语言和解释性语言: 通常所说的计算机语言分为编译型和解释型语言.编译型语言典型的如C,C++,通常在程序执行之前必须经由编译器编译成机 ...

  7. day1作业--三级菜单

    作业概述: 写一个三级菜单 实现如下功能: (1)可依次选择进入各子菜单 (2)在每一级按“b”都可以返回上一级,按“q"都可以退出 流程图: readme: 简介: three_menu. ...

  8. 【python】——三级菜单

    作业需求: 打印三级菜单 可返回上一级 可随时退出程序 #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: __Json.Zzgx__ menu ...

  9. Python入门-三级菜单

    作业题目: 三级菜单 作业需求: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, ...

  10. 2017-2018-2 1723《程序设计与数据结构》第八周作业 & 实验二 & 第一周结对编程 总结

    作业地址 第八周作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1847 (作业界面已评分,可随时查看,如果对自己的评分有意 ...

随机推荐

  1. 实现一个shell程序

    实现一个自己的shell程序,这个程序有这些功能:解释执行命令,支持输入输出重定向,支持管道,后台运行 程序.当运行该程序后,它支持以下的命令格式: 1.单个命令,如:ls.2.带l到多个参数的命令, ...

  2. 学习笔记 - Manacher算法

    Manacher算法 - 学习笔记 是从最近Codeforces的一场比赛了解到这个算法的~ 非常新奇,毕竟是第一次听说 \(O(n)\) 的回文串算法 我在 vjudge 上开了一个[练习],有兴趣 ...

  3. webpack安装与使用

    webpack: JavaScript 应用程序的静态模块打包器 安装webpack前需要搭建node环境: 1. 安装node.js(https://nodejs.org/en/), 安装完后会自动 ...

  4. 关于Vue的组件的通用性问题

    在项目中,经常会有需求让我们把很多通用性的功能写成一个模板,然后根据不同的应用场景传入不同的参数来完成某种功能 但是在很多时候,其实并不是一个模板就能完成所有的功能的 这就需要分类写组件了,但是需求方 ...

  5. 干货分享:QQ群排名霸屏优化规则靠前的新技术

    谈起QQ群排名的优化规则,很多人又爱又恨,原因很简单,爱他的都是引流效果是非常好的,通过关键词搜索排名好的技术,能排到全国默认前三,叫人怎能不爱他,恨的原因也恨简单,无论你的群完善的再怎么好,好像都无 ...

  6. 壹度DIY_微信小程序组件_小程序插件开发

    开源免费插件,diy特有的页面机制,搭配30+自定义组件,让你的站点每一个页面都可以完全自定义,可无缝对接任意小程序,如有疑问加入qq壹度小程序交流群:302866773:或wx:liu2417301 ...

  7. Java客户端访问HBase集群解决方案(优化)

    测试环境:Idea+Windows10 准备工作: <1>.打开本地 C:\Windows\System32\drivers\etc(系统默认)下名为hosts的系统文件,如果提示当前用户 ...

  8. Leecode刷题之旅-C语言/python-121买卖股票的最佳时机

    /* * @lc app=leetcode.cn id=121 lang=c * * [121] 买卖股票的最佳时机 * * https://leetcode-cn.com/problems/best ...

  9. 关于MySQL的锁机制详解

    锁概述 MySQL的锁机制,就是数据库为了保证数据的一致性而设计的面对并发场景的一种规则. 最显著的特点是不同的存储引擎支持不同的锁机制,InnoDB支持行锁和表锁,MyISAM支持表锁. 表锁就是把 ...

  10. HTTPS相关知识以及在golang中的应用

    最近简单学习了HTTPS,并在golang中实践了一下,现在把学到的知识记录下来,方便以后查看,如果有幸能帮到有需要的人就更好了,如果有错误欢迎留言指出. 一些简单的概念,可以自行百度百科 HTTPS ...