补充内容:
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修改全局变量下次再进来的时候全局变量已经变了,函数中添加全局变量的判断
然后根据条件来判断是否需要再次进行登录程序。

python--简易员工信息系统编写的更多相关文章

  1. [源码]Python简易http服务器(内网渗透大文件传输含下载命令)

    Python简易http服务器源码 import SimpleHTTPServerimport SocketServerimport sysPORT = 80if len(sys.argv) != 2 ...

  2. C#中一道关于员工信息系统的题(主要考察LinQ和正则表达式验证)

    今天上午进行了公司的C# C level考核,最后一道编程题是关于员工信息系统的,题目的要求大概是这样的:1.要可以保存员工信息(XXXXX),并且要用正则表达式对输入信息进行验证:2.要可以对员工信 ...

  3. python的单元测试代码编写流程

    单元测试: 单元测试是对单独的代码块分别进行测试, 以确保它们的正确性, 单元测试主要还是由开发人员来做, 其余的集成测试和系统测试由专业的测试人员来做. python的单元测试代码编写主要记住以下几 ...

  4. Python 简易web日志查看工具&可改装为命令行工具

    Python 简易web日志查看工具&可改装为命令行工具 效果图 原理 利用python的paramiko库模拟ssh登录操作,并执行tail命令 所需库 flask.paramiko.gev ...

  5. python 正则的使用 —— 编写一个简易的计算器

    在 Alex 的博客上看到的对正则这一章节作业是编写一个计算器,要求能计算出下面的算式. 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 + ...

  6. Python turtle 模块可以编写游戏,是真的吗?

    1. 前言 turtle (小海龟) 是 Python 内置的一个绘图模块,其实它不仅可以用来绘图,还可以制作简单的小游戏,甚至可以当成简易的 GUI 模块,编写简单的 GUI 程序. 本文使用 tu ...

  7. python 进度条的编写

    背景: 在执行一些Python脚本时,经常出现执行脚本的过程当中,不知道脚本执行了百分之多少,这个问题一直都让我很苦恼.所以特意总结一下,进度条的编写. #!/usr/bin/env python2. ...

  8. python简易爬虫来实现自动图片下载

    菜鸟新人刚刚入住博客园,先发个之前写的简易爬虫的实现吧,水平有限请轻喷. 估计利用python实现爬虫的程序网上已经有太多了,不过新人用来练手学习python确实是个不错的选择.本人借鉴网上的部分实现 ...

  9. python之购物车的编写(熬夜撸代码中。。。)

    购物车的编写对于我这种不是很精通函数的小白来说,简直太难了.各种坑,各种无奈啊!不过总算也是写出来了! 不多说,直接上代码! #!/usr/bin/env python#用户名 sanjiang#密码 ...

随机推荐

  1. 【bzoj3291】Alice与能源计划 模拟费用流+二分图最大匹配

    题目描述 在梦境中,Alice来到了火星.不知为何,转眼间Alice被任命为火星能源部长,并立刻面临着一个严峻的考验. 为了方便,我们可以将火星抽象成平面,并建立平面直角坐标系.火星上一共有N个居民点 ...

  2. xampp下bugfree部署

    以Bugfree3.0.4为例,讲解如何搭建LAMP架构的Web服务器. Bugfree是一个XAMPP架构的网站,XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的搭建XAMP ...

  3. 【bzoj】P4407于神之怒加强版(莫比乌斯反演)

    题目链接 套路一般的枚举$gcd(i,j)=w$.设$min(n,m)=top$,则有 $\sum\limits_{i=1}^{n}\sum\limits_{j=1}{m}gcd(i,j)$ $=\s ...

  4. <定时主库导出/备库导入>

    1.设置定时任务时间及所需要的dmp文件路径 [mm1@localhost ~]$ crontab -e 0 0 * * *  sh /home/mm1/exp_table.sh  2>& ...

  5. java中String初始化的两种方式

    转自:http://www.diybl.com/course/3_program/java/javajs/2007104/75886.html       字符串可能是任何程序语言中都会出现的对象,j ...

  6. python的dbutil

    目录机构如下: dbutil代码如下: #!/usr/bin/python # -*- coding:utf-8 -*- import configparser import pymysql clas ...

  7. python 字体颜色,背景颜色

  8. 在vue-cli环境下模拟数据接口及如何应用mockjs

    第一种办法 1.需要先准备json文件 在根目录下新建个oapi文件夹下新建个iorder.json文件将需要遍历的json数据沾里面. 2.在build文件夹下新建dev-server.js 文件 ...

  9. Sequelize的增删改查

    //启动mysql数据库 net start mysql //新建index.js //建立连接var Sequelize=require("sequelize");var mys ...

  10. 介绍一款移动端滚动加载的插件---dropload

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...