博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习day1作业总结
阅读量:5901 次
发布时间:2019-06-19

本文共 6438 字,大约阅读时间需要 21 分钟。

hot3.png

为了以后更好更快速的复习,此博客记录我对作业的总结。对于基础作业,我认为最重要的是过程,至于实现是不是完美,代码是不是完美,虽然重要,但是作业过程中,用到的知识点是值得总结和整理的。

一.模拟登陆:

1. 用户输入帐号密码进行登陆  

2. 用户信息保存在文件内  
3. 用户密码输入错误三次后锁定用户  

思路:

1)输入时用户名后,先判断用户名是否被锁,然后检查用户名是否存在用户数据库;  

2)输入相同不存在用户名3次,此用户名被锁;  
3)输入用户名存在时才可输入密码,相同用户名时,输入密码错误三次,此用户名被锁;  
4)若每次都没输入存在的用户,则再次要求输入用户,直到达到总输入次数;

基本流程图:

代码:

cat user_login.py #主程序
#!#!/usr/bin/env python#_*_coding:utf-8_*_''' * Created on 2016/10/10 22:13. * @author: Chinge_Yang.'''import osimport getpassretry_max = 3retry_count = 0user_file = "user.txt"lock_file = "user_lock.txt"user_same = 0user_tmp = ""if not os.path.exists(lock_file):   #不存在时,则创建    f = open(lock_file,'w')    f.close()while retry_count < retry_max:    #输入用户名    user_name = input("Please input your name:")    #输入的用户名和上次输入的对比    if user_name == user_tmp:        #用户一样数加1        user_same += 1    else:        #用户一样数归0        user_same = 0    #输入的用户名存为临时变量    user_tmp = user_name    #判断用户是否被锁    lock_check = open(lock_file)    for line in lock_check:        line = line.split()        #用户被锁,打印提示        if user_name == line[0]:            exit("User \033[1;31;40m%s\033[0m is locked!" % user_name)    lock_check.close()    #查看是否存在于用户数据库    user_check = open(user_file)    for l in user_check:        l = l.split()        user = l[0]        passwd = l[1]        if user_name == user:            #输入密码            #user_passwd = input("Please input your password:")            user_passwd = getpass.getpass("\033[1;33;40mPlease input your password:\033[0m")            #判断密码是否正确            if user_passwd == passwd:                exit("\033[1;32;40mWelcome to you!\033[0m")            else:                print("User \033[1;31;40m%s\033[0m password is error!" % user_name)            #用户存在于数据库,跳出循环            break    else:        print("User \033[1;31;40m%s\033[0m not match in the user file!" % user_name)    user_check.close()    if user_same >= 2:        print("User \033[1;31;40m%s\033[0m name was locked!" % user_name)        #将用户名写入到锁定文件中        file = open(lock_file,"a")        file.write(user_name+"\n")        file.close()    retry_count += 1

user.txt文件内容格式:

cat user.txt
apache 123jim 234docker 333fank yhn

总结:

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.使用循环打印菜单;

基本流程图:

代码:

cat Three_layer_menu.py #主程序
#!/usr/bin/env python#_*_coding:utf-8_*_''' * Created on 2016/10/16 21:31. * @author: Chinge_Yang.'''import sysimport menuwhile True:    #定义一层菜单为字典    one_dict = {}    #获取字典所有的键    one_layer = menu.menu.keys()    #获取字典所有的枚举    one_enu = enumerate(one_layer)    #一层菜单字典    for index1,value1 in one_enu:        one_dict[index1]=value1    for k1 in one_dict:        print ("\033[32m%d\033[0m --> %s" %(k1,one_dict[k1]))    print ("输入【back】:返回;【quit】:退出")    once_select = input("请输入你的选择:\n").strip()    if once_select.isdigit():        once_select = int(once_select)        if 0 <= once_select < len(one_dict):            print("---->进入一级菜单 \033[32m%s\033[0m" %(one_dict[once_select]))            while True:                #定义二层菜单为字典                two_dict = {}                # 获取字典所有的键                two_layer = menu.menu[one_dict[once_select]].keys()                # 获取字典所有的枚举                two_enu = enumerate(two_layer)                # 二层菜单字典                for index2, value2 in two_enu:                    two_dict[index2] = value2                # 打印二层菜单                for k2 in two_dict:                    print("\033[32m%d\033[0m --> %s" % (k2, two_dict[k2]))                print("输入【back】:返回;【quit】:退出")                twice_select = input("请输入你的选择:\n").strip()                if twice_select.isdigit():                    twice_select = int(twice_select)                    if 0 <= twice_select < len(two_dict):                        print("---->进入二级菜单 \033[32m%s\033[0m" % (two_dict[twice_select]))                        # 定义三层菜单列表                        three_layer = menu.menu[one_dict[once_select]][two_dict[twice_select]]                        while True:                            # 打印三层菜单                            for k3 in three_layer:                                print (k3)                            print ("输入【back】:返回;【quit】:退出")                            three_select = input("请输入你的选择:\n").strip()                            if three_select == "back":                                break                            elif three_select == "quit":                                sys.exit ("----谢谢使用----")                            continue                else:                    if twice_select == "back":                        break                    elif twice_select == "quit":                        sys.exit ("----谢谢使用----")                    print ("\033[31m请输入数字\033[0m")        else:            print("----\033[31m数字超出范围,请重新输入!\033[0m----")    else:        if once_select == "back":            break        elif once_select == "quit":            sys.exit ("----谢谢使用----")        print ("\033[31m请输入数字\033[0m")
cat menu.py
#!/usr/bin/env python  # _*_coding:utf-8_*_  '''  * Created on 2016/10/16 19:37.  * @author: Chinge_Yang.  '''menu = {      "家用电器": {          "电视": [              "合资品牌电视",              "国产品牌电视",              "互联网品牌电视"          ],          "空调": [              "壁挂式空调",              "柜式空调",              "中央空调",              "空调配件"          ],          "洗衣机": [              "滚筒洗衣机",              "洗烘一体机",              "波轮洗衣机",              "迷你洗衣机",              "洗衣机配件"          ]      },      "电脑": {              "电脑整机": [                  "笔记本",                  "游戏本"                  "平板电脑",                  "平板电脑配件",                  "台式机",                  "一体机服务器",                  "笔记本配件"              ],              "电脑配件": [                  "显示器",                  "CPU",                  "主板",                  "硬盘",                  "内存"              ],              "外设产品": [                  "鼠标",                  "键盘",                  "键鼠套装",                  "网络仪表仪器",                  "U盘",                  "移动硬盘"              ]          }      }

总结:

1.字典的用法,包括获取key,value及相关函数用法;

2.列表的用法,遍历列表的用法;

3.import导入py文件用法;

本文出自 “” 博客,谢绝转载!

转载于:https://my.oschina.net/ygqygq2/blog/790989

你可能感兴趣的文章
机器学习的原理
查看>>
flink watermark介绍
查看>>
[Flink原理介绍第四篇】:Flink的Checkpoint和Savepoint介绍
查看>>
mybatis学习之一 开发环境配置和接口编程
查看>>
Android Xutils 框架
查看>>
C#基础知识整理 基础知识(21) 委托(二)
查看>>
Android应用程序键盘(Keyboard)消息处理机制分析(16)
查看>>
Sysbench 0.5版安装配置
查看>>
统一沟通-技巧-11-Lync-联盟-无法-音频-远程桌面-传文件
查看>>
书摘—你不可不知的心理策略
查看>>
【博客话题】毕业——开始人生的艰苦历程
查看>>
2014.7.30-8.3日广大网友的提问解答(答问题的第2个工作周)
查看>>
Powershell管理系列(二十五)PowerShell操作之获取AD账号及邮箱信息
查看>>
Linux安装telnet
查看>>
【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物...
查看>>
openstack nova修改实例路径,虚拟磁盘路径
查看>>
java.sql.SQLException: Lock wait timeout exceeded --转
查看>>
使用C#进行图像处理的几种方法(转)
查看>>
Ajax原理学习
查看>>
sap scriptfom 多语言翻译
查看>>