天天看点

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,如需转载请自行联系原作者