Python学习day1作业总结

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

一.模拟登陆:

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 sys  
import getpass
retry_max = 3    #总输入次数  
retry_count = 0  
user_file = "user.txt"  
lock_file = "user_lock.txt"  
user_same = 0  
user_tmp = ""
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]:  
            sys.exit("User \033[1;31;40m%s\033[0m is locked!" % user_name)
    #查看是否存在于用户数据库  
    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:  
                sys.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)
    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 123
jim 234
docker 333
fank 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 sys
import menu
while 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文件用法;

时间: 2024-10-12 22:38:17

Python学习day1作业总结的相关文章

Python学习day1作业

作业内容: pass 流程图: 代码: 1.主文件 1 import sys 2 3 lock = "lock.txt" 4 logfile = "login.txt" 5 login_info = 0 6 i = 0 7 8 while i < 3 and login_info== 0 : 9 name = input("Please input your name: ") 10 11 f = open(lock, "r&quo

Python学习day5作业-ATM和购物商城

Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆,用户间转帐 支持多用户 管理员可添加账户.指定用户额度.冻结用户等 购物车: 商品信息- 数量.单价.名称 用户信息- 帐号.密码.余额 用户可充值 购物历史信息 允许用户多次购买,每次可购买多件 余额不足时进行提醒 用户退出时 ,输出当次购物信息 用户下次登陆时可查看购物历史 商品列表分级显示 1

python学习—-day1.计算机基础

python学习-day1.计算机基础 一.计算机系统的硬件组成部分:电脑的三大件:内存.硬盘.cpu 二.编程语言的作用及操作系统和硬件的关系:答:1.编程语言的作用是与计算机沟通,并且可以用编程语言在操作系统上写程序,从而达到开发应用软件的目的2.操作系统是用来管理计算机硬件资源的 三.应用程序->操作系统->硬件:在硬件之上装操作系统,在操作系统上装应用程序1.应用程序是指程序员开发的可运行的软件2.操作系统的目的是用来管理计算机硬件的3.硬件:cpu.硬盘.内存.键盘.鼠标统称为电脑硬

Python学习day3作业

Python学习day3作业 days3作业 作业需求     HAproxy配置文件操作 根据用户输入,输出对应的backend下的server信息 可添加backend 和sever信息 可修改backend 和sever信息 可删除backend 和sever信息 操作配置文件前进行备份 添加server信息时,如果ip已经存在则修改;如果backend不存在则创建:若信息与已有信息重复则不操作 [x] 博客 [x] 查询backend下的server信息 [x] 添加backend和se

Python学习day2作业总结

为了以后更好更快速的复习,此博客记录我对作业的总结.对于基础作业,我认为最重要的是过程,至于实现是不是完美,代码是不是完美,虽然重要,但是作业过程中,用到的知识点是值得总结和整理的. 一.购物车: 1. 商品信息- 数量.单价.名称  2. 用户信息- 帐号.密码.余额  3. 用户可充值  4. 购物历史信息  5. 允许用户多次购买,每次可购买多件  6. 余额不足时进行提醒  7. 用户退出时 ,输出当次购物信息  8. 用户下次登陆时可查看购物历史  9. 商品列表分级显示 思路: 1.

Python 学习 DAY1

是看这篇文章学习的:http://blog.csdn.net/chenguolinblog/article/details/11661233 貌似我2年前妄想自学,但是老是没下决心...今天一定要正式开始了.. 废话不多说,开始: s1:variables. 1 变量:一个变量就是一个单词,只有一个单一的值 2 练习:设置一个变量my_variable,值设置为10 my_variable=10 3 数据类型有interage , floats , boolean 3种 4 Python是一个区

&lt;潭州教育&gt;-Python学习笔记@作业1

作业: 1.定义讲过的每种数值类型,序列类型 数值类型: 整型:int 字符型:float 字符串:str 布尔型: bool 序列类型: 列表: 有序,可变,元素类型没有固定要求lst = [1,2,3] 元祖:有序,不能改变,元素类型没有固定要求tuple_list = (1,2,3,4,5) 字典: 无序,键值对组合,利于检索dict = {'username':'Stone','passwd':'helloworld'} 集合: 无序,元素类型没有固定要求set_list = {1,2,

&lt;潭州教育&gt;-Python学习笔记@作业2

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; min-height: 13.0px } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC"; color: #008400 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; col

Python学习----Day1

一:重点知识点概括 1. Python的输出与输入函数---- print(), input() 2. 条件判断---- if else, elif 3. 循环 ---- while, for 二: Python的输出与输入函数 1. Python的输出函数: print()  #打印输出 print()可以打印输出字符串.整数.数字计算结果,遇到逗号","会输出一个空格. 例如: >>> print("Hello world!") Hello w