需求:
<code>编写三级菜单</code>
<code> </code><code>1.</code><code>菜单需求:</code>
<code> </code><code>一级菜单: 北京 山西</code>
<code> </code><code>二级菜单: 朝阳 昌平 长治 大同</code>
<code> </code><code>三级菜单:三里屯 工体 沙河 西二旗 潞城 黎城 阳高县 左云县</code>
<code> </code><code>2.</code><code>任何一级都可以输入b返回上一级,输入q退出。</code>
<code> </code><code>3.</code><code>知识涵盖字典、列表、</code><code>for</code><code>循环、</code><code>while</code><code>循环、字符串格式化</code>
流程图:
<a href="https://s2.51cto.com/wyfs02/M01/98/08/wKiom1k2dNaBu5xfAAC5w97DPXA278.png-wh_500x0-wm_3-wmp_4-s_599606681.png" target="_blank"></a>
python代码
<code>#!/bin/bash/env python</code>
<code>#python3.X</code>
<code>#定义三级菜单字典zone</code>
<code>zone </code><code>=</code> <code>{</code>
<code> </code><code>'北京'</code><code>:{</code>
<code> </code><code>'朝阳'</code><code>:[</code><code>'三里屯'</code><code>,</code><code>'工体'</code> <code>],</code>
<code> </code><code>'昌平'</code><code>:[</code><code>'沙河'</code><code>,</code><code>'西二旗'</code> <code>]</code>
<code> </code><code>},</code>
<code> </code><code>'山西'</code><code>:{</code>
<code> </code><code>'长治'</code><code>:[</code><code>'潞城'</code><code>, </code><code>'黎城'</code> <code>],</code>
<code> </code><code>'大同'</code><code>:[</code><code>'阳高县'</code><code>,</code><code>'左云县'</code><code>]</code>
<code> </code><code>}</code>
<code>}</code>
<code>#定义省级列表</code>
<code>province_list </code><code>=</code> <code>list</code><code>(zone.keys())</code>
<code>#打印省级列表循环</code>
<code>while</code> <code>True</code><code>:</code>
<code> </code><code>print</code><code>(</code><code>"欢迎光临省级列表"</code><code>.center(</code><code>20</code><code>,</code><code>'-'</code><code>))</code>
<code> </code><code>#循环省级列表</code>
<code> </code><code>for</code> <code>i </code><code>in</code> <code>province_list:</code>
<code> </code><code>#打印省级列表序号和省级名称</code>
<code> </code><code>print</code><code>(province_list.index(i)</code><code>+</code><code>1</code><code>,i)</code>
<code> </code><code>#提示输入</code>
<code> </code><code>p1 </code><code>=</code> <code>input</code><code>(</code><code>"请选择序号:例:1 [输入q:退出]"</code><code>)</code>
<code> </code><code>#判断输入的是否全是数字</code>
<code> </code><code>if</code> <code>p1.isdigit():</code>
<code> </code><code>#如果输入的是数字,用int进行强制转换成整形</code>
<code> </code><code>p1 </code><code>=</code> <code>int</code><code>(p1)</code>
<code> </code><code>#如果p1 大于0或者小于等于省级列表的参数数量</code>
<code> </code><code>if</code> <code>p1 ></code><code>0</code> <code>and</code> <code>p1 <</code><code>=</code> <code>len</code><code>(province_list):</code>
<code> </code><code>#求出省级名称</code>
<code> </code><code>province_name </code><code>=</code> <code>province_list[p1</code><code>-</code><code>1</code><code>]</code>
<code> </code><code>#求出省级下边的市级列表</code>
<code> </code><code>city_list </code><code>=</code> <code>list</code><code>(zone[province_name].keys())</code>
<code> </code><code>#打印市级列表循环</code>
<code> </code><code>while</code> <code>True</code><code>:</code>
<code> </code><code>print</code><code>(</code><code>"欢迎光临市级列表"</code><code>.center(</code><code>20</code><code>, </code><code>'-'</code><code>))</code>
<code> </code><code>#循环市级列表</code>
<code> </code><code>for</code> <code>c </code><code>in</code> <code>city_list:</code>
<code> </code><code>#打印市级列表序号和市级列表名称</code>
<code> </code><code>print</code><code>(city_list.index(c)</code><code>+</code><code>1</code><code>,c)</code>
<code> </code><code>#提示输入</code>
<code> </code><code>c1 </code><code>=</code> <code>input</code><code>(</code><code>"请选择序号:例:1 [输入b:返回上一级][输入q:退出]"</code><code>)</code>
<code> </code><code>#判断是否输入的是数字</code>
<code> </code><code>if</code> <code>c1.isdigit():</code>
<code> </code><code>c1 </code><code>=</code> <code>int</code><code>(c1)</code>
<code> </code><code>#如果输入的序号在市级列表序列之内,打印列表,不在,告知不在。</code>
<code> </code><code>if</code> <code>c1 ></code><code>0</code> <code>and</code> <code>c1 <</code><code>=</code> <code>len</code><code>(city_list):</code>
<code> </code><code>#求出市级列表的名称</code>
<code> </code><code>city_name </code><code>=</code> <code>city_list[c1</code><code>-</code><code>1</code><code>]</code>
<code> </code><code>#求出市级下边的县级列表:</code>
<code> </code><code>county_list </code><code>=</code> <code>list</code><code>(zone[province_name][city_name])</code>
<code> </code><code>#县级列表循环</code>
<code> </code><code>while</code> <code>True</code><code>:</code>
<code> </code><code>print</code><code>(</code><code>"欢迎光临县级列表"</code><code>.center(</code><code>20</code><code>,</code><code>"-"</code><code>))</code>
<code> </code><code>#循环县级列表</code>
<code> </code><code>for</code> <code>c2 </code><code>in</code> <code>county_list:</code>
<code> </code><code>#打印县级列表</code>
<code> </code><code>print</code><code>(county_list.index(c2)</code><code>+</code><code>1</code><code>,c2)</code>
<code> </code><code>#提示输入</code>
<code> </code><code>c2 </code><code>=</code> <code>input</code><code>(</code><code>"请输入相应符号:[输入b:返回上一级][输入q:退出]"</code><code>)</code>
<code> </code><code>#如果输入是b 退出这个循环</code>
<code> </code><code>if</code> <code>c2 </code><code>=</code><code>=</code> <code>"b"</code><code>:</code>
<code> </code><code>break</code>
<code> </code><code>#如果输入的是q 退出整个循环</code>
<code> </code><code>elif</code> <code>c2 </code><code>=</code><code>=</code> <code>"q"</code><code>:</code>
<code> </code><code>#exit() 代表退出整个循环</code>
<code> </code><code>exit()</code>
<code> </code><code>#如果输入的不是b、q 就提示重新输入</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>print</code><code>(</code><code>"\033[31m输入错误,Please re-enter!\033[0m"</code><code>)</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>print</code><code>(</code><code>"\n输入的序号%d不在此列表中!Please RE-enter!\n"</code><code>%</code><code>c1)</code>
<code> </code><code>#如果输入的是b 退出这个循环</code>
<code> </code><code>elif</code> <code>c1 </code><code>=</code><code>=</code> <code>"b"</code><code>:</code>
<code> </code><code>break</code>
<code> </code><code>#如果输入的是q 退出整个程序</code>
<code> </code><code>elif</code> <code>c1 </code><code>=</code><code>=</code> <code>"q"</code><code>:</code>
<code> </code><code>exit()</code>
<code> </code><code>#如果输入的不是数字、b 、q 那么提示 重新输入</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>print</code><code>(</code><code>"\033[31m输入错误,Please re-enter!\033[0m"</code><code>)</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>print</code><code>(</code><code>"\n输入的%d不在此列表中!Please RE-enter!\n"</code><code>%</code><code>p1)</code>
<code> </code><code>#如果不是数字,看是否是 字母q</code>
<code> </code><code>elif</code> <code>p1 </code><code>=</code><code>=</code> <code>"q"</code><code>:</code>
<code> </code><code>#如果是q 执行exit()退出整个程序</code>
<code> </code><code>exit()</code>
<code> </code><code>#如果输入的不是数字和q,提示重新输入</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>print</code><code>(</code><code>"\033[31m输入错误,Please re-enter!\033[0m"</code><code>)</code>
<code></code>
本文转自506554897 51CTO博客,原文链接:http://blog.51cto.com/506554897/1932872,如需转载请自行联系原作者