python第一周的代码题_python作业:三级菜单(第一周)

一.作业需求:

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作业三级菜单day1(第一周)

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

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

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

python之三级菜单

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

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

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

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

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

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

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

day1作业--三级菜单

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

【python】——三级菜单

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

Python入门-三级菜单

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

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

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

随机推荐

git push 报错!!!!

[root@NB sh]# git push To git@x0.xx.xxx.x1:yanjing_chenl/IT-DOC.git ! [rejected] master -> master ...

ORACLE插入DATE类型字段

1 怎样在ORACLE中输入DATE类型的字段 insert into table_name (date_column) values(to_date('2006-06-04','yyyy-mm-dd ...

Dynamic Programming - Part2

实现如下: public static void main(String[] args) { String squence1 = "ABCBDAB"; String squence ...

javascript oop深入学习笔记(一)

一.定义和实例化一个类: 在OOP的思想中,类是一个很重要的元素,一个类表示了具有相似的一类事物的抽象,通过实例化一个类,可以获得属于该类的一个实例,我们也可以称之为对象. 在javascript中, ...

JMS - Message

一条 JMS 消息包含三个部分:消息头.消息属性和消息体. 消息头 消息头提供了和消息有关的元数据,它描述了消息有谁创建.何时创建.数据的有效长度等信息.消息头还包含了描述消息目的地(主题或队列)的路 ...

VS2010 测试 -普通单元测试

http://www.cnblogs.com/rhythmK/archive/2012/04/20/2458832.html

第一章:shiro简介

1.1 简介 Apache Shiro是java的一个安全框架,相当简单,没有Spring Security功能强大,但是实际工作中大多使用shiro就够了.可以帮助我们完成:认证,授权,加密,会话管 ...

Tomcat请求头过大

今天开发反应Tomcat的请求头过大

URL加载页面的过程

总体过程: 1.DNS解析 2.TCP连接 3.发送HTTP请求 4.服务器处理请求并返回HTTP报文 5.浏览器解析渲染页面 6.连接结束 一.DNS解析 在互联网中,每一台机计算机的唯一 标识是他 ...

putty怎么用?如何使用Putty远程管理Linux主机

Putty是一个免费的Windows 32平台下用于telnet.rlogin和ssh客户端的远程客户端工具,可以通过PUTTY快速的实现SSH连接linux等主机,下面小编就给大家演示一下如何使用P ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值