天天看點

python三級菜單

需求:

<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 &gt;</code><code>0</code> <code>and</code> <code>p1 &lt;</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 &gt;</code><code>0</code> <code>and</code> <code>c1 &lt;</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,如需轉載請自行聯系原作者