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字型变 ...
随机推荐
- 最新版Intellij IDEA插件JRebel 7.0.7官方免费激活
本文转自:http://blog.csdn.net/u012283609/article/details/70213307 开场语 有时候真实比小说更加荒诞,因为虚构是在一定逻辑下进行的,而现实往往毫 ...
- Linux基础命令---sudo
sudo sudo允许用户以超级用户或安全策略指定的另一个用户的身份执行命令.Sudo支持安全策略插件和输入/输出日志的插件.第三方可以开发和分发自己的策略和I/O日志插件,以便与sudo前端无缝地工 ...
- Python之路----迭代器与生成器
一.迭代器 L=[1,,2,3,4,5,] 取值:索引.循环for 循环for的取值:list列表 dic字典 str字符串 tuple元组 set f=open()句柄 range() enumer ...
- MySQL Crash Course #16# Chapter 24. Using Cursors + mysql 循环
mysql中游标的使用案例详解(学习笔记)这篇讲得相当直白好懂了. 索引: cursor 基础讲解 mysql 循环 书上的整合代码 cursor 基础讲解 cursor 有点类似于 JDBC 中的 ...
- 函数对象与仿函数(function object and functor)
part 1. 仿函数在STL组件中的关系 如下图: # 仿函数配合算法完成不同的策略变化. # 适配器套接仿函数. part 2. 仿函数介绍 传递给算法的“函数型实参”不一定得是函数,可以是行为类 ...
- awk之match函数
功能:match函数是用于个性化定制搜索模式. 例子: 文件内容: this is wang ,not wan that is chen, not che this is chen ,and wang ...
- Linux中tomcat日志按日期自动分割
Linux中tomcat日志分割需要用到cronolog 附上cronolog-1.6.2.tar.gz 1. 安装cronolog tar –zxvf cronolog-1.6.2.tar.gz . ...
- 20145321《网络对抗》Exp2 后门原理与实践
实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任务计划启动 (3)使用MSF meterpreter生成可执行文件,利用ncat或 ...
- Memcached深入分析及内存调优
到这里memcached的初步使用我们已经没问题了,但是了解一些它内部的机制还是十分必要的,这直接涉及到你能否把memcached给真正“用好”. Memcached的守护进程机制使用的是Unix下的 ...
- 一种斐波那契博弈(Fibonacci Nim)
事实上我也不知道这算是哪个类型的博弈 是在复习$NOIP$初赛的时候看到的一个挺有趣的博弈 所以就写出来分享一下 $upd \ on \ 2018.10.12$忽然发现这个其实就是$Fibonacci ...