一.作业需求:

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

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

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

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

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

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

  1. {
  2. '北京':{
  3. "昌平":{
  4. "沙河":["oldboy","test"],
  5. "天通苑":["链家地产","我爱我家"]
  6. },
  7. "朝阳":{
  8. "望京":["奔驰","陌陌"],
  9. "国贸":{"CICC","HP"},
  10. "东直门":{"Advent","飞信"},
  11. },
  12. "海淀":{},
  13. },
  14. '山东':{
  15. "德州":{},
  16. "青岛":{},
  17. "济南":{}
  18. },
  19. '广东':{
  20. "东莞":{},
  21. "常熟":{},
  22. "佛山":{},
  23. },
  24. }

三.流程图:

四.代码:(python3.6)

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # Author: Even
  4.  
  5. import sys
  6.  
  7. file = open("三级菜单文本内容",'r',encoding='utf-8') # 打开3级菜单文本文件
  8. f = file.read()
  9. for line in f: # 读取文件中每行信息
  10. file_str = str(f) # 将每行信息转成字符串格式
  11. data = eval(file_str) # 字符串转成字典格式
  12.  
  13. def list(): # 定义读取字典中的key
  14. for i in data:
  15. print(i)
  16.  
  17. def choose1(choice1): # 定义第一层选择
  18. while choice1 != 'q': # 输入为q即退出程序
  19. global one
  20. one = choice1 # 定义全局变量one 使得其他函数可以调用
  21. if choice1 in data:
  22. for i2 in data[one]:
  23. print("\t", i2) # 展示3级菜单中所选第一层下的第二层信息
  24. choose2(input("请输入第二层:")) # 调用choose2函数,输入第二层信息
  25. break
  26. elif choice1 == 'b': # 输入b退出循环
  27. break
  28. else:
  29. error = input("输入错误,请重新输入第一层:") # 输入内容不在第一层选项中
  30. if error == 'q': # 输入q退出程序
  31. sys.exit()
  32. else: # 否则调用本函数
  33. choose1(error)
  34. else:
  35. sys.exit()
  36.  
  37. def choose2(choice2): # 定义第二层选择
  38. while choice2 != 'q':
  39. global two
  40. two = choice2 # 定义全局变量two 使得其他函数可以调用
  41. if choice2 in data[one]:
  42. for i3 in data[one][two]:
  43. print("\t\t", i3) # 展示3级菜单中所选第二层下的第三层信息
  44. choose3(input("请输入第三层:")) # 调用choose3函数,输入第三层信息
  45. break
  46. elif choice2 == 'b': # 输入b退回第一层
  47. list() # 调用list函数展示第一层信息
  48. choose1(input("请输入第一层:"))
  49. break
  50. else:
  51. error2 = input("输入错误,请重新输入第二层:") # 输入错误,重新输入
  52. if error2 == 'q': # 输入q退出程序
  53. sys.exit()
  54. else:
  55. choose2(error2) # 调用本函数
  56. else:
  57. sys.exit()
  58.  
  59. def choose3(choice3): # 定义第三层选择
  60. while choice3 != 'q':
  61. global three
  62. three = choice3 # 定义全局变量three 使得其他函数可以调用
  63. if choice3 in data[one][two]:
  64. for i4 in data[one][two][three]:
  65. print("\t\t\t", i4) # 展示3级菜单中所选第三层下的第四层信息
  66. choose4(input("最后一层,退回上一层请按‘b’,退出请按'q")) # 调用choose4函数,提示退出或退回
  67. break
  68. elif choice3 == 'b': # 输入为b退出
  69. choose1(one)
  70. break
  71. else:
  72. error3 = input("输入错误,请重新输入第三层:") # 输入错误,可以重新输入,q退出
  73. if error3 == 'q':
  74. sys.exit()
  75. else:
  76. choose3(error3) # 调用本函数
  77. else:
  78. sys.exit()
  79.  
  80. def choose4(choice4): # 定义最后退出
  81. while choice4 != 'q': # 输入q退出
  82. if choice4 == 'b': # 输入b退回上一层
  83. choose2(two)
  84. else:
  85. choose4(input("真的是最后一层了,退回上一层请按‘b’,退出请按'q'")) # 声明结束
  86. else:
  87. sys.exit()
  88.  
  89. print("退出请按'q',返回上级菜单请按'b'") # 声明功能
  90. list() # 调用list函数展示第一层信息
  91. 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. MyBatis之Mapper XML 文件详解(一)

    MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...

  2. NopCommerce学习(2) EntityFramework

    NopCommerce-EntityFramework开发:主要是Controller-Service-Repository的开发方式 操作数据库,主要对象是BaseEntity,IDbContext ...

  3. Linux学习笔记——1.超级用户

    以超级用户工作:su su命令允许临时变换到任何一用户标识(如果拥有口令的话),并挂起当前shell,为新用户开启一个新的shell. su <user> 将当前用户标识harley变换为 ...

  4. JSP/Servlet开发——第十章 Ajax与JQuery

    1. 认识Ajax: ◆在传统的 Web 应用中,每次请求服务器都会生成新的页面,用户在提交请求后,总是要等待服务器的响应,如果前一个请求没有得到响应,则后一个请求就不能发送. ◆由于这是一种独占式的 ...

  5. jquery 去除空格

    /** * 是否去除所有空格 * @param str * @param is_global 如果为g或者G去除所有的 * @returns */ function Trim(str,is_globa ...

  6. JavaScript深入之参数按值传递

    在<JavaScript高级程序设计>第三版 4.1.3,讲到传递参数: ECMAscript中所有函数的参数都是按值传递 按值传递 也就是,把函数外部的值复制给函数内部的参数,就和把值从 ...

  7. 全文检索引擎 sphinx-coreseek中文索引

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索. Sphinx特别为一些 ...

  8. Appointment Helper

    using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Que ...

  9. centos升级数据库

    Centos下升级MySQL数据库 备份数据 $ mysqldump -u xxx -h xxx -P 3306 -p --all-databases > databases.sql 查看版本 ...

  10. avast:中兴手机预装恶意软件 嵌入固件底层

    著名安全机构 avast 发布报告称,旗下安全威胁实验室发现,中兴.爱可视.MyPhone 等厂商的多款安卓手机居然预装了恶意广告软件.该恶意软件被命名为“ Cosiloon ”,它会在用户使用浏览器 ...