需求:
1
2
3
4
5
6
7
|
编写三级菜单
1.
菜单需求:
一级菜单: 北京 山西
二级菜单: 朝阳 昌平 长治 大同
三级菜单:三里屯 工体 沙河 西二旗 潞城 黎城 阳高县 左云县
2.
任何一级都可以输入b返回上一级,输入q退出。
3.
知识涵盖字典、列表、
for
循环、
while
循环、字符串格式化
|
流程图:
python代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#!/bin/bash/env python
#python3.X
#定义三级菜单字典zone
zone
=
{
'北京'
:{
'朝阳'
:[
'三里屯'
,
'工体'
],
'昌平'
:[
'沙河'
,
'西二旗'
]
},
'山西'
:{
'长治'
:[
'潞城'
,
'黎城'
],
'大同'
:[
'阳高县'
,
'左云县'
]
}
}
#定义省级列表
province_list
=
list
(zone.keys())
#打印省级列表循环
while
True
:
print
(
"欢迎光临省级列表"
.center(
20
,
'-'
))
#循环省级列表
for
i
in
province_list:
#打印省级列表序号和省级名称
print
(province_list.index(i)
+
1
,i)
#提示输入
p1
=
input
(
"请选择序号:例:1 [输入q:退出]"
)
#判断输入的是否全是数字
if
p1.isdigit():
#如果输入的是数字,用int进行强制转换成整形
p1
=
int
(p1)
#如果p1 大于0或者小于等于省级列表的参数数量
if
p1 >
0
and
p1 <
=
len
(province_list):
#求出省级名称
province_name
=
province_list[p1
-
1
]
#求出省级下边的市级列表
city_list
=
list
(zone[province_name].keys())
#打印市级列表循环
while
True
:
print
(
"欢迎光临市级列表"
.center(
20
,
'-'
))
#循环市级列表
for
c
in
city_list:
#打印市级列表序号和市级列表名称
print
(city_list.index(c)
+
1
,c)
#提示输入
c1
=
input
(
"请选择序号:例:1 [输入b:返回上一级][输入q:退出]"
)
#判断是否输入的是数字
if
c1.isdigit():
c1
=
int
(c1)
#如果输入的序号在市级列表序列之内,打印列表,不在,告知不在。
if
c1 >
0
and
c1 <
=
len
(city_list):
#求出市级列表的名称
city_name
=
city_list[c1
-
1
]
#求出市级下边的县级列表:
county_list
=
list
(zone[province_name][city_name])
#县级列表循环
while
True
:
print
(
"欢迎光临县级列表"
.center(
20
,
"-"
))
#循环县级列表
for
c2
in
county_list:
#打印县级列表
print
(county_list.index(c2)
+
1
,c2)
#提示输入
c2
=
input
(
"请输入相应符号:[输入b:返回上一级][输入q:退出]"
)
#如果输入是b 退出这个循环
if
c2
=
=
"b"
:
break
#如果输入的是q 退出整个循环
elif
c2
=
=
"q"
:
#exit() 代表退出整个循环
exit()
#如果输入的不是b、q 就提示重新输入
else
:
print
(
"\033[31m输入错误,Please re-enter!\033[0m"
)
else
:
print
(
"\n输入的序号%d不在此列表中!Please RE-enter!\n"
%
c1)
#如果输入的是b 退出这个循环
elif
c1
=
=
"b"
:
break
#如果输入的是q 退出整个程序
elif
c1
=
=
"q"
:
exit()
#如果输入的不是数字、b 、q 那么提示 重新输入
else
:
print
(
"\033[31m输入错误,Please re-enter!\033[0m"
)
else
:
print
(
"\n输入的%d不在此列表中!Please RE-enter!\n"
%
p1)
#如果不是数字,看是否是 字母q
elif
p1
=
=
"q"
:
#如果是q 执行exit()退出整个程序
exit()
#如果输入的不是数字和q,提示重新输入
else
:
print
(
"\033[31m输入错误,Please re-enter!\033[0m"
)
|
本文转自506554897 51CTO博客,原文链接:http://blog.51cto.com/506554897/1932872
,如需转载请自行联系原作者