python学习day13一周总结补充+员工信息系统编写

补充内容:
eval 将字符串变成变量名
locals   看输入的是否是字典中的一个key
func.__name____怎么看变量名的数据类型
斐波那契数列
li=[1,1]
while li[-1]<1000000:
    li.append(li[-1]+li[-2])
print(li)

li=[1,1]
while len(li)<50:
    li.append(li[-1]+li[-2])
print(li)

最后两个数相加变成下个数,判断什么时候停下来

员工信息系统编译思路

在编译程序之前,先将用户的需求考虑清楚,然后开始判断从哪方面先入手。
因为函数装饰器比较好写,并且大体都要用在装饰函数上,所以决定最后搞定。
先编写了一个界面,方便用户操作,让用户根据界面上的操作提醒来进行操作。
大致的编写思路就是讲功能列出,然后添加一个退出,用来代表程序的全部功能和结束。用input来进行用户的指令输入
写完界面之后就可以注释了,方便接下来的编译
先进行查询功能的编译。写了一个函数首先要想到的就是从文件中取出数据来,
这样,我就先将文件打开然后取出数据,然后根据用户需求的公式,来进行用户指令的获取,
根据用户的指令,将得到的数据进行判断,比如当*和job是否在数据中时才进行下一项程序,将数据取出之后判断是否与查询条件相符合,然后输出查询结果。
这部分代码编写时主要的难度就是用户指令中真正意图和关键字的获取,还有利用关键字对数据进行判断,要思考怎样才能取出用户需要的数据。
根据用户的需求,一共有三种语法,那么久进行逐一编写,全部拿来与取出的数据进行对比,在这里用的方法是如果用户查询的数据在数据line里面就取出这一条line
接下来开始写创建
在写创建之前也是先要打开文件,这时候要想的是创建新数据的话,肯定就是文件操作中的追加。然后根据这个思路进行编写
难点在于添加数据时候要按照编号,我的方法是令i初始值为,然后每次循环line数据,就令i+1并且将这个i添加到列表li中,然后最后取出列表的最后一个值,也就是上一条数据的值了,然后将他+1就是下一条数据的ID
有个困难就是追加的话是不带换行的,直接在上一条数据后面进行添加,所以每次添加都要在前面加一个\n,然而在删除数据的时候,这种方法的弊端也出现了
因为每次删除数据是不会删除\n的,所以每次添加数据都会多隔一行,然后获取数据的ID是根据行来判断数字的,这样数字就会发生混乱。发生了这个bug之后开始思考解决办法。
最后的解决办法是加一个判断,如果上一条数据中没有\n的话就添加\n,也就是说第一次添加的时候会有一个\n吓一跳数据添加时候如果上一行里面有\n也就是删除数据没有删去的\n就不添加\n的话就添加\n,也就是说第一次添加的时候会有一个\n吓一跳数据添加时候如果上一行里面有\n也就是删除数据没有删去的\n就不添加\n
解决了问题
然后就是删除数据
删除员工信息用户的需求是按员工信息的ID,这样的话就要将重心放在信息的首位,也就是ID上,所以每次循环信息的时候,倒要取这列数据的头一个数据,也就是ID来进行判断
我的方法是取出数据之后如果和用户输入的需求ID相同,那就删除他,然后重新写一个文件,上述方法也是一样,每次修改了数据,除了创建和查询,都是要在结尾将这个文件删除,重新创建一个同名文件进行更新
当然,一个文件更新完了,改名成修改数据的文件,那么这个文件就不存在,下次操作就会报错。所以在结尾又会添加一个相同的文件,预备下次操作的更新
最后一个写的修改,同样,也是读文件拿出 数据,然后判断用户输入的条件是否在这列数据中,如果在的话就可以用,用字符串修改方法,将用户条件替换旧的信息。
同样创建新文件改名,移除旧的,编译完成。
最后就是编译器了,用语法糖每个都添加,然后写登录程序,利用改变全局变量的方法,就可以完成用户需求。

f = open(‘用户登录‘,‘r‘,encoding=‘utf-8‘)
m = f.read()     //获取文件中用户信息
f.close()
a,b = m.split(‘\n‘)      //用户名和密码分割
flag=1
def yanzheng(func):
    def inner(*args,**kwargs):
        global flag         //声明改变全局变量
        if flag==1:       //第一次进来全局变量为1
            while True:
                n =input(‘请输入用户名‘)
                if n ==a:
                    while True:
                        z = input(‘请输入密码‘)
                        if z == b:
                            print(‘验证成功‘)
                            func(*args, **kwargs)
                            flag =2        //验证成功的话全局变量变成2
                            break
                        else:
                            print(‘密码错误‘)
                    break
                else:
                    print(‘用户名错误‘)
        else:
            func(*args, **kwargs)         //全局变量变成2,这样第二次往后的判断就会直接走else
    return inner
@yanzheng
def jisuan():
    for i in range(0,10):
        print(i)
@yanzheng
def shuchu():
    print(‘老板‘)
jisuan()
shuchu()

利用全局变量的特点,global修改全局变量下次再进来的时候全局变量已经变了,函数中添加全局变量的判断
然后根据条件来判断是否需要再次进行登录程序。

时间: 2024-11-08 23:10:03

python学习day13一周总结补充+员工信息系统编写的相关文章

Python学习(第一周)

大学毕业之后学习的Java开发最终却没有走上程序员之路.从事企业IT管理工作(运维.ERP.财务.).13年大数据很火的时候接触到SAP的BW.BO那时候觉得BI那就是大数据,现在想想那时多么肤浅啊.后来读了<货币战争><经济学原理>等经济学方面的书,明白了逻辑和哲学提供方向让我知道要做什么,统计学.数学让我知道用什么方法去做.然后在知乎等网站上了解相关的信息,最终选择了使用Python去做实现. 我选择的入门书籍是<Python基础教程  第2版> 同时也入手了<

Python学习--第六周

本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢? 你搜罗了自己掌握的所有技能,写出了下面的代码来描述这两个角色 1 def person(name,age,sex,job): 2 data = { 3 '

python学习第三周(下 函数)

本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值  嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测试, 交集\差集\并集\反向(对称)差集 2. 元组 只读列表,只有count, index 2 个方法 作用:如果一些数据不想被人修改, 可以存成元组,比如身份证列表 3. 字典 key-value对 特性: 无顺序 去重 查询速度快,比列表快多了 比list占用内存多 为什么会查询速度会快呢?

python学习之第四天补充

本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 迭代器&

Python学习心得第一周-02

十二 流程控制之if...else 既然我们编程的目的是为了控制计算机能够像人脑一样工作,那么人脑能做什么,就需要程序中有相应的机制去模拟.人脑无非是数学运算和逻辑运算,对于数学运算在上一节我们已经说过了.对于逻辑运算,即人根据外部条件的变化而做出不同的反映,比如 1 如果:女人的年龄>30岁,那么:叫阿姨 age_of_girl=31 if age_of_girl > 30: print('阿姨好') 2 如果:女人的年龄>30岁,那么:叫阿姨,否则:叫小姐 age_of_girl=1

Python学习--第七周

本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典类vs新式类 把下面代码用python2 和python3都执行一下 1 #_*_coding:utf-8_*_ 2 3 4 class A: 5 def __init__(self): 6 self.n = 'A' 7 8 class B(A): 9 # def __init__(self): 1

Python学习day13 Django 分页/Session/Cookie

Created on 2017年5月3日 第1课:上节作业简介 鼠标放上表单后进入编辑模式-----需学习----CMDB里会学到模态对话框里--弹出对话框---对后台进行操作---方式:1 Form-用Submit页面整个刷新 2 用Ajax后台请求,通过Sessuss方式返回数据来控制模态对话框 第2课:本节内容1第3课:本节内容2 第4课:django自定义分页一 28minutes第5课:django自定义分页二 35minutes url(r'^index/(\d*)', views.

python学习之第五天补充

计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

python学习--第五周

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.p