Python练习题--持续更新
1、你是一个高级测试工程师,现在要做性能测试,需要你写一个函数,批量生成一些注册使用的账号。
产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母、小写字母、数字组成,结果如下图:
2、测试机器的磁盘太小,经常报警,要写一个清理日志的脚本,每次运行就把三天之前的日志删除,日志名的格式是xxx-20170623.log。
3、公司服务器,经常被别人攻击,要写个监控nginx日志的脚本,每分钟运行一次,如果这一分钟内同一个ip请求次数超过200次,加入黑名单,nginx日志每一行的格式如下:
46.161.9.44 - - [23/Jun/2017:03:17:37 +0800] "GET /bbs/forum.php?mod=forumdisplay&fid=2 HTTP/1.0" 200 48260 "http://aaaa.bbbbb.com/bbs/forum.php?mod=forumdisplay&fid=2" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"
46.161.9.44 - - [23/Jun/2017:03:17:39 +0800] "GET /bbs/forum.php?mod=forumdisplay&fid=2 HTTP/1.0" 200 46200 "http://aaaa.bbbbb.com/bbs/forum.php?mod=forumdisplay&fid=2" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"
def agent_log():
import time
pin=0
while True:
ips = []
fr = open('access.log')
fr.seek(pin)
for line in fr:
ip = line.split()[0]
ips.append(ip)
new_ips = set(ips)
for new_ip in new_ips:
if ips.count(new_ip)>200:
print('加入黑名单的ip是:%s'%new_ip)
pin = fr.tell() #记录读完的指针位置
time.sleep(60)
4、额,来个小插曲,写程序求出1-100的累加和。1+2+3+4+5+.....+100。
5、不知不觉你已经写了很多python代码了,代码全部都放在e盘下面的my_code文件夹中,突然突发奇想,想统计了一下总共写了多少行代码,包括空行和注释,要把代码的行数、空行数、注释行数都统计出来。
6、有一个文件,里面有一些敏感词汇,如下,如果输入这些词,就用**代替,然后输出,例如输入今天没吃饭,碰到一个傻逼,原来那个sb是小明。输出今天没吃饭,碰到一个**,原来那个**是小明。
傻逼
傻b
煞笔
煞比
sb
傻B
shabi
with open('file.txt','a+',encoding='utf-8') as fr:
with open('file_bak','w') as fw:
fr.seek(0)
for line in fr:
new_line = line.replace('傻逼', '**').\
replace('sb', '**').replace('煞笔', '**').replace('煞比', '**').replace('傻B', '**')
fw.write(new_line)
print(new_line)
#1、读出来所有的敏感词
#2、循环这些敏感词,判断是不是在用户输入的字符串里面
#3、如果在的话就替换
fr = open('keywords.txt',encoding='utf-8')
talk = input('请输入一句话:').strip()
for line in fr:
new_line = line.strip()
if new_line in talk:
talk = talk.replace(new_line,'**')
print('河蟹过之后的是:%s'%talk)
7、写个简单的爬虫,把这个链接http://tieba.baidu.com/p/2166231880,里面所有的图片保存到本地。
8、有一个存着学生成绩的文件,里面存的是json串,json串读起来特别不直观,需要你写代码把它都写到excel中,并计算出总分和平均分,json格式如下
{
"":["小花",99,100,98.5],
"":["小王",90,30.5,95],
"":["小明",67.5,49.6,88]
}
写完之后excel格式如下:
9、列表、元组、集合有什么区别?
10、下面几段代码中哪个是错误的写法,为什么?
var = [1,2,3,4]
var[1]=5
var1 = 'abc123'
var1[0]='s'
var2 = ('a','b','c','d')
var2[-1]=2
var3={'a',3,'b',''}
var3[2]='c'
var4={'name':'lily','sex':'nv'}
print(var4['age'])
11、怎么通过不引入第三方变量的方式,交换两个变量的值?
a=1
b=2
12、下面的代码执行结果是什么,为什么?
li = [1,1,2,3,4,5,6,7,8,9]
for i in li:
if i%2!=0:
li.remove(i)
print(li)
13、下面这段代码的执行结果是什么?
money = 500
def test(consume): return money - consume def test1(money): return test(money)+money money = test1(money)
print(money)
14、下面这段代码会打印什么,为什么?
def test():
global a
a = 5 def test1():
c = a+5
return c res = test1()
print(res)
15、写一个产生密码的程序,输入次数,输入多少次就产生多少条数据,要求密码必须包含大写字母、小写字母和数字,长度8位,不能重复
#需求分析
#1、循环,输入什么就循环多少次
#2、随机来取值,是从所有的大写字母、小写字母、数字里面来取
#3、 0123456789 a-z A-Z
#4、长度8位,就是随机取8个
#5、不能重复,放到一个list里面,再判断,如果产生的数字不在这个list的话,就是不重复
#6、写到文件里面就行了
#来3个字符串
#012345679 从这个字符串里面取1位 包含数字
#a-z 再随机从这里取1位 包含小写字母了
#A-Z 再随机从这里取1位 包含大写字母了
#0123456789 a-z A-Z 再取5位,再和前面的3位加起来 8位
import random,string count = input('请输入你要产生多少条密码:').strip()
all_passwds = []
for i in range(int(count)):
num = random.sample(string.digits,1) #随机取1位数字
lower = random.sample(string.ascii_lowercase,1) #随机取1位小写字母
upper = random.sample(string.ascii_uppercase,1) #随机取1位大写字母
other = random.sample(string.ascii_letters+string.digits,5) #随机取5位
print(other)
res = num+lower+upper+other #产生的8位密码
print(res)
res = ''.join(res)
if res not in all_passwds: #判断是否重复
all_passwds.append(res+'\n')
with open('passwds.txt','a+') as fw:
fw.seek(0)
fw.writelines(all_passwds)
16、写一个注册程序,用字典保存
字典格式如下:
{
"niuhanyang":{"passwd":"123456","role":1"},
"jmy":{"passwd":"123456","role":2"},
"xiaohei":{"passwd":123456,"role":1}
}
role如果是1的话,代表管理员,如果是2代表普通用户,注册的用户都是普通用户
#需求分析:
#1、先要从原来的数据库(咱们的user_info文件)里面,把已经存在的数据读出来
#2、让用户输入账号、密码、密码确认
#3、判断用户是否存在,如果不存在的话,才可以注册
#4、判断密码和确认密码输入一致的话,注册成功
#5、把新的用户写到这个userinfo字典中
#6、把新的userinfo替换旧的
#7、保存文件
fr = open('user_info.txt','a+')
fr.seek(0)
user_info = eval(fr.read()) #存的是从文件里面读出来的用户信息
user_num = len(user_info) #存的最开始的字典长度
for i in range(3):
username = input('plz enter your username:').strip()
password = input('plz enter your password:').strip()
c_password = input('plz enter your password agen:').strip()
if len(username)==0:
print('用户名不能为空')
elif username not in user_info:
if password == c_password and len(password)>0:
user_info[username]={'passwd':password,'role':''}
print('注册成功!')
break
else:
print('密码不能为空!两次输入密码必须一致!')
else:
print('你注册的用户已经存在!')
if user_num == len(user_info):
pass
else:
fr.seek(0)
fr.truncate()#清空文件
fr.write(str(user_info))
fr.flush()#缓冲区的
fr.close()
17、注册和登录连上,能用你之前注册的用户来登录
#需求分析:
#1、读原来的用户
#2、判断就行了
#3、说白了就是字典取值 fr = open('user_info.txt')
user_info = eval(fr.read())#存的所有用户
for i in range(3):
username = input('plz enter your username:').strip()
password = input('plz enter your password:').strip()
if len(username)<1 and len(password)<1:
print('用户名/密码不能为空!')
elif username in user_info:#存在
if user_info[username]['passwd'] == password:
print('欢迎光临【%s】'%username)
break
else:
print('密码错误!')
else:
print('用户不存在!')
18、
先让你登录
{
"nhy":{"passwd":123,'role':1,'moeny':10000,"carts":['mac']},
"nhy2":{"passwd":123,'role':2,'moeny':10000,"carts":[]}
}
#role是1的话,代表管理员,2代表普通用户
#普通用户:
#1、查看所有的商品
#2、输入商品名称购买商品,购买完了之后要加到自己的购物车里面,钱要减去
#3、可以查看自己购物车和余额,你已经买了xx东西,你还xxx钱
#4、退出
#管理员,1、添加商品,商品名称,商品价格
2、充值,输入用户名,给他加钱
3、退出
Python练习题--持续更新的更多相关文章
- Python练习题–持续更新
1.你是一个高级测试工程师,现在要做性能测试,需要你写一个函数,批量生成一些注册使用的账号. 产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大 ...
- Python奇技淫巧 - 持续更新中....
Python奇技淫巧 人生苦短,我用Python: 编程界这绝对不是一句空话,尤其是对于使用过多个语言进行工作的同学们来说,用Python的时间越长,越有一种我早干嘛去了的想法,没事,啥时候用Pyth ...
- 常见排序算法整理(python实现 持续更新)
1 快速排序 快速排序是对冒泡排序的一种改进. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行 ...
- Python习题持续更新
1.你是一个高级测试工程师,现在要做性能测试,需要你写一个函数,批量生成一些注册使用的账号. 产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大 ...
- python开发--python函数-(持续更新)
1. 打印 : print() # 打印,输出 2. 变量 : var = 'hello' # 变量var , 把'hello' 赋值给变量 var 3. if 函数 : # 代码块 4个空格或者一个 ...
- Python开发【第二十三篇】:持续更新中...
Python开发[第二十三篇]:持续更新中...
- 好用的函数,assert,random.sample,seaborn tsplot, tensorflow.python.platform flags 等,持续更新
python 中好用的函数,random.sample等,持续更新 random.sample random.sample的函数原型为:random.sample(sequence, k),从指定序列 ...
- LeetCode 题目的 Python 实现(持续更新中)
Python-LeetCode 是一个使用 Python 语言解决 LeetCode 问题的代码库,库有以下几个方面需要注意: 所有题目都是 AC 的: 按照题目顺序,每 50 个放在一个目录下,方便 ...
- LeetCode python实现题解(持续更新)
目录 LeetCode Python实现算法简介 0001 两数之和 0002 两数相加 0003 无重复字符的最长子串 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 Z字型变 ...
随机推荐
- Java EE企业应用发展
新形式下的企业应用特点企业应用系统从封闭走向开放,由局域网转到互联网,随着涉众面的极大扩展,新的企业应用要求多浏览器支持,国际化支持,全球业务的互联互通.企业需求提升.除了功能性需求,客户对于安全,性 ...
- ajax return true/false无效原因
错误示例:function checkCP(customerId,productId){ $.ajax({ url:"/cp/checkCP", type:"post&q ...
- 怎么说, 开发会很乐意去主动修改bug?
怎么说, 开发会很乐意去主动修改bug? 一图顶上千言万语,如下:
- 20145212罗天晨 注入shellcode实验及Retuen-to-libc实验
注入shellcode实验 实验步骤 一.准备一段shellcode 二.设置环境 Bof攻击防御技术 1.从防止注入的角度来看:在编译时,编译器在每次函数调用前后都加入一定的代码,用来设置和检测堆栈 ...
- 不到 200 行代码,教你如何用 Keras 搭建生成对抗网络(GAN)【转】
本文转载自:https://www.leiphone.com/news/201703/Y5vnDSV9uIJIQzQm.html 生成对抗网络(Generative Adversarial Netwo ...
- QT学习资源
http://www.qter.org/portal.php?mod=view&aid=26
- P1471 方差
题目 luogu 思路 \[\frac{1}{n}*\sum_{1}^{n}( a_{i}-A)^{2}\] \[\frac{1}{n}*\sum_{1}^{n}( a_{i}^2-2*A*a_{i} ...
- 51NOD 1099 任务执行顺序
来源:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1099 前天没睡好 昨天做题闷闷沉沉的 好多一眼题 都瞎做了 这题今 ...
- [BZOJ1060][ZJOI2007]时态同步 树形dp
Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数 字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路 ...
- SQLSERVER 内存占用高的处理方式
https://www.cnblogs.com/srsrd/p/6962982.html 方法一: 方法二: 使用以下语句查找出什么语句占内存最高,针对占内存高的语句进行优化SELECT SS.SUM ...