天天看點

Python學習day1作業總結一.模拟登陸:二.三級菜單:

1. 使用者輸入帳号密碼進行登陸  

2. 使用者資訊儲存在檔案内  

3. 使用者密碼輸入錯誤三次後鎖定使用者  

1)輸入時使用者名後,先判斷使用者名是否被鎖,然後檢查使用者名是否存在使用者資料庫;  

2)輸入相同不存在使用者名3次,此使用者名被鎖;  

3)輸入使用者名存在時才可輸入密碼,相同使用者名時,輸入密碼錯誤三次,此使用者名被鎖;  

4)若每次都沒輸入存在的使用者,則再次要求輸入使用者,直到達到總輸入次數;

<a href="http://s5.51cto.com/wyfs02/M01/89/33/wKioL1gMPYDC8XOrAAHI3_mcZTE285.jpg" target="_blank"></a>

<code>cat</code> <code>user_login.py </code><code>#主程式</code>

<code>#!#!/usr/bin/env python</code>

<code>#_*_coding:utf-8_*_</code>

<code>'''</code>

<code> </code><code>* Created on 2016/10/10 22:13.</code>

<code> </code><code>* @author: Chinge_Yang.</code>

<code>import</code> <code>os</code>

<code>import</code> <code>getpass</code>

<code>retry_max </code><code>=</code> <code>3</code>

<code>retry_count </code><code>=</code> <code>0</code>

<code>user_file </code><code>=</code> <code>"user.txt"</code>

<code>lock_file </code><code>=</code> <code>"user_lock.txt"</code>

<code>user_same </code><code>=</code> <code>0</code>

<code>user_tmp </code><code>=</code> <code>""</code>

<code>if</code> <code>not</code> <code>os.path.exists(lock_file):   </code><code>#不存在時,則建立</code>

<code>    </code><code>f </code><code>=</code> <code>open</code><code>(lock_file,</code><code>'w'</code><code>)</code>

<code>    </code><code>f.close()</code>

<code>while</code> <code>retry_count &lt; retry_max:</code>

<code>    </code><code>#輸入使用者名</code>

<code>    </code><code>user_name </code><code>=</code> <code>input</code><code>(</code><code>"Please input your name:"</code><code>)</code>

<code>    </code><code>#輸入的使用者名和上次輸入的對比</code>

<code>    </code><code>if</code> <code>user_name </code><code>=</code><code>=</code> <code>user_tmp:</code>

<code>        </code><code>#使用者一樣數加1</code>

<code>        </code><code>user_same </code><code>+</code><code>=</code> <code>1</code>

<code>    </code><code>else</code><code>:</code>

<code>        </code><code>#使用者一樣數歸0</code>

<code>        </code><code>user_same </code><code>=</code> <code>0</code>

<code>    </code><code>#輸入的使用者名存為臨時變量</code>

<code>    </code><code>user_tmp </code><code>=</code> <code>user_name</code>

<code>    </code><code>#判斷使用者是否被鎖</code>

<code>    </code><code>lock_check </code><code>=</code> <code>open</code><code>(lock_file)</code>

<code>    </code><code>for</code> <code>line </code><code>in</code> <code>lock_check:</code>

<code>        </code><code>line </code><code>=</code> <code>line.split()</code>

<code>        </code><code>#使用者被鎖,列印提示</code>

<code>        </code><code>if</code> <code>user_name </code><code>=</code><code>=</code> <code>line[</code><code>0</code><code>]:</code>

<code>            </code><code>exit(</code><code>"User \033[1;31;40m%s\033[0m is locked!"</code> <code>%</code> <code>user_name)</code>

<code>    </code><code>lock_check.close()</code>

<code>    </code><code>#檢視是否存在于使用者資料庫</code>

<code>    </code><code>user_check </code><code>=</code> <code>open</code><code>(user_file)</code>

<code>    </code><code>for</code> <code>l </code><code>in</code> <code>user_check:</code>

<code>        </code><code>l </code><code>=</code> <code>l.split()</code>

<code>        </code><code>user </code><code>=</code> <code>l[</code><code>0</code><code>]</code>

<code>        </code><code>passwd </code><code>=</code> <code>l[</code><code>1</code><code>]</code>

<code>        </code><code>if</code> <code>user_name </code><code>=</code><code>=</code> <code>user:</code>

<code>            </code><code>#輸入密碼</code>

<code>            </code><code>#user_passwd = input("Please input your password:")</code>

<code>            </code><code>user_passwd </code><code>=</code> <code>getpass.getpass(</code><code>"\033[1;33;40mPlease input your password:\033[0m"</code><code>)</code>

<code>            </code><code>#判斷密碼是否正确</code>

<code>            </code><code>if</code> <code>user_passwd </code><code>=</code><code>=</code> <code>passwd:</code>

<code>                </code><code>exit(</code><code>"\033[1;32;40mWelcome to you!\033[0m"</code><code>)</code>

<code>            </code><code>else</code><code>:</code>

<code>                </code><code>print</code><code>(</code><code>"User \033[1;31;40m%s\033[0m password is error!"</code> <code>%</code> <code>user_name)</code>

<code>            </code><code>#使用者存在于資料庫,跳出循環</code>

<code>            </code><code>break</code>

<code>        </code><code>print</code><code>(</code><code>"User \033[1;31;40m%s\033[0m not match in the user file!"</code> <code>%</code> <code>user_name)</code>

<code>    </code><code>user_check.close()</code>

<code>    </code><code>if</code> <code>user_same &gt;</code><code>=</code> <code>2</code><code>:</code>

<code>        </code><code>print</code><code>(</code><code>"User \033[1;31;40m%s\033[0m name was locked!"</code> <code>%</code> <code>user_name)</code>

<code>        </code><code>#将使用者名寫入到鎖定檔案中</code>

<code>        </code><code>file</code> <code>=</code> <code>open</code><code>(lock_file,</code><code>"a"</code><code>)</code>

<code>        </code><code>file</code><code>.write(user_name</code><code>+</code><code>"\n"</code><code>)</code>

<code>        </code><code>file</code><code>.close()</code>

<code>    </code><code>retry_count </code><code>+</code><code>=</code> <code>1</code>

user.txt檔案内容格式:

<code>cat</code> <code>user.txt</code>

<code>apache 123</code>

<code>jim 234</code>

<code>docker 333</code>

<code>fank yhn</code>

1.getpass模闆用于輸入密碼時,不顯示明文;

2.os.path.exists(檔案路徑)用于判斷檔案是否存在;

3.input的用法,版本3,預設輸入的内容是字元類型,如果是變量名,則為此變量名的資料類型;

4.if判斷語句用法;

5.while循環語句用法;

6.split()指定分隔符對字元串切片用法;

7.print(“%s” % name)等格式化輸出;

8.顔色輸出用法:手打出來 \033[32;1m内容\033[0m ;

9.數學算法使用;

1. 運作程式輸出第一級菜單  

2. 選擇一級菜單某項,輸出二級菜單,同理輸出三級菜單  

3. 菜單資料儲存在檔案中

1.菜單資料使用字典儲存在檔案中,使用import讀取;

2.擷取一級菜單;

3.擷取二級菜單;

4.擷取三級菜單;

5.使用循環列印菜單;

<a href="http://s3.51cto.com/wyfs02/M01/89/35/wKiom1gMMjKRiIPjAAFGnnPXtdI615.png" target="_blank"></a>

<code>cat</code> <code>Three_layer_menu.py </code><code>#主程式</code>

<code>#!/usr/bin/env python</code>

<code> </code><code>* Created on 2016/10/16 21:31.</code>

<code>import</code> <code>sys</code>

<code>import</code> <code>menu</code>

<code>while</code> <code>True</code><code>:</code>

<code>    </code><code>#定義一層菜單為字典</code>

<code>    </code><code>one_dict </code><code>=</code> <code>{}</code>

<code>    </code><code>#擷取字典所有的鍵</code>

<code>    </code><code>one_layer </code><code>=</code> <code>menu.menu.keys()</code>

<code>    </code><code>#擷取字典所有的枚舉</code>

<code>    </code><code>one_enu </code><code>=</code> <code>enumerate</code><code>(one_layer)</code>

<code>    </code><code>#一層菜單字典</code>

<code>    </code><code>for</code> <code>index1,value1 </code><code>in</code> <code>one_enu:</code>

<code>        </code><code>one_dict[index1]</code><code>=</code><code>value1</code>

<code>    </code><code>for</code> <code>k1 </code><code>in</code> <code>one_dict:</code>

<code>        </code><code>print</code> <code>(</code><code>"\033[32m%d\033[0m --&gt; %s"</code> <code>%</code><code>(k1,one_dict[k1]))</code>

<code>    </code><code>print</code> <code>(</code><code>"輸入【back】:傳回;【quit】:退出"</code><code>)</code>

<code>    </code><code>once_select </code><code>=</code> <code>input</code><code>(</code><code>"請輸入你的選擇:\n"</code><code>).strip()</code>

<code>    </code><code>if</code> <code>once_select.isdigit():</code>

<code>        </code><code>once_select </code><code>=</code> <code>int</code><code>(once_select)</code>

<code>        </code><code>if</code> <code>0</code> <code>&lt;</code><code>=</code> <code>once_select &lt; </code><code>len</code><code>(one_dict):</code>

<code>            </code><code>print</code><code>(</code><code>"----&gt;進入一級菜單 \033[32m%s\033[0m"</code> <code>%</code><code>(one_dict[once_select]))</code>

<code>            </code><code>while</code> <code>True</code><code>:</code>

<code>                </code><code>#定義二層菜單為字典</code>

<code>                </code><code>two_dict </code><code>=</code> <code>{}</code>

<code>                </code><code># 擷取字典所有的鍵</code>

<code>                </code><code>two_layer </code><code>=</code> <code>menu.menu[one_dict[once_select]].keys()</code>

<code>                </code><code># 擷取字典所有的枚舉</code>

<code>                </code><code>two_enu </code><code>=</code> <code>enumerate</code><code>(two_layer)</code>

<code>                </code><code># 二層菜單字典</code>

<code>                </code><code>for</code> <code>index2, value2 </code><code>in</code> <code>two_enu:</code>

<code>                    </code><code>two_dict[index2] </code><code>=</code> <code>value2</code>

<code>                </code><code># 列印二層菜單</code>

<code>                </code><code>for</code> <code>k2 </code><code>in</code> <code>two_dict:</code>

<code>                    </code><code>print</code><code>(</code><code>"\033[32m%d\033[0m --&gt; %s"</code> <code>%</code> <code>(k2, two_dict[k2]))</code>

<code>                </code><code>print</code><code>(</code><code>"輸入【back】:傳回;【quit】:退出"</code><code>)</code>

<code>                </code><code>twice_select </code><code>=</code> <code>input</code><code>(</code><code>"請輸入你的選擇:\n"</code><code>).strip()</code>

<code>                </code><code>if</code> <code>twice_select.isdigit():</code>

<code>                    </code><code>twice_select </code><code>=</code> <code>int</code><code>(twice_select)</code>

<code>                    </code><code>if</code> <code>0</code> <code>&lt;</code><code>=</code> <code>twice_select &lt; </code><code>len</code><code>(two_dict):</code>

<code>                        </code><code>print</code><code>(</code><code>"----&gt;進入二級菜單 \033[32m%s\033[0m"</code> <code>%</code> <code>(two_dict[twice_select]))</code>

<code>                        </code><code># 定義三層菜單清單</code>

<code>                        </code><code>three_layer </code><code>=</code> <code>menu.menu[one_dict[once_select]][two_dict[twice_select]]</code>

<code>                        </code><code>while</code> <code>True</code><code>:</code>

<code>                            </code><code># 列印三層菜單</code>

<code>                            </code><code>for</code> <code>k3 </code><code>in</code> <code>three_layer:</code>

<code>                                </code><code>print</code> <code>(k3)</code>

<code>                            </code><code>print</code> <code>(</code><code>"輸入【back】:傳回;【quit】:退出"</code><code>)</code>

<code>                            </code><code>three_select </code><code>=</code> <code>input</code><code>(</code><code>"請輸入你的選擇:\n"</code><code>).strip()</code>

<code>                            </code><code>if</code> <code>three_select </code><code>=</code><code>=</code> <code>"back"</code><code>:</code>

<code>                                </code><code>break</code>

<code>                            </code><code>elif</code> <code>three_select </code><code>=</code><code>=</code> <code>"quit"</code><code>:</code>

<code>                                </code><code>sys.exit (</code><code>"----謝謝使用----"</code><code>)</code>

<code>                            </code><code>continue</code>

<code>                </code><code>else</code><code>:</code>

<code>                    </code><code>if</code> <code>twice_select </code><code>=</code><code>=</code> <code>"back"</code><code>:</code>

<code>                        </code><code>break</code>

<code>                    </code><code>elif</code> <code>twice_select </code><code>=</code><code>=</code> <code>"quit"</code><code>:</code>

<code>                        </code><code>sys.exit (</code><code>"----謝謝使用----"</code><code>)</code>

<code>                    </code><code>print</code> <code>(</code><code>"\033[31m請輸入數字\033[0m"</code><code>)</code>

<code>        </code><code>else</code><code>:</code>

<code>            </code><code>print</code><code>(</code><code>"----\033[31m數字超出範圍,請重新輸入!\033[0m----"</code><code>)</code>

<code>        </code><code>if</code> <code>once_select </code><code>=</code><code>=</code> <code>"back"</code><code>:</code>

<code>        </code><code>elif</code> <code>once_select </code><code>=</code><code>=</code> <code>"quit"</code><code>:</code>

<code>            </code><code>sys.exit (</code><code>"----謝謝使用----"</code><code>)</code>

<code>        </code><code>print</code> <code>(</code><code>"\033[31m請輸入數字\033[0m"</code><code>)</code>

<code>cat</code> <code>menu.py</code>

<code>#!/usr/bin/env python  </code>

<code># _*_coding:utf-8_*_  </code>

<code>'''  </code>

<code>* Created on 2016/10/16 19:37.  </code>

<code>* @author: Chinge_Yang.  </code>

<code>menu </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>"波輪洗衣機"</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>,  </code>

<code>                </code><code>"CPU"</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>"U盤"</code><code>,  </code>

<code>                </code><code>"移動硬碟"</code>  

<code>            </code><code>]  </code>

<code>        </code><code>}  </code>

<code>    </code><code>}</code>

1.字典的用法,包括擷取key,value及相關函數用法;

2.清單的用法,周遊清單的用法;

3.import導入py檔案用法;

本文轉自 ygqygq2 51CTO部落格,原文連結:http://blog.51cto.com/ygqygq2/1864705,如需轉載請自行聯系原作者