day2:python的简介与认识
day2:# 1、写一个登录程序
# username
# passwd
# 让用户输入账号和密码,输入用户和密码输入正确的话
# 提示你 xxx,欢迎登录,今天的日期是xxx,程序结束
# 错误的话,提示账号/密码输入错误
# 最多输入3次,如果输入3次都没有登录成功,提示失败次数过多。
# 需要判断输入是否为空。
# http://www.nnzhp.cn/archives/162 参考这个博客
count=0
username = 'fancy'
passwd = 123456
import datetime
today = datetime.date.today()
welcome = '%s 欢迎登录,今天的日期是 %s' %(username,today)
while count<3:
username = input('请输入用户名:')
passwd = input('请输入密码:')
if username == 'fancy' and passwd == '':
print(welcome)
break
elif username.strip() ==''or passwd.strip() =='':
print('账号或密码不能为空')
elif username!='fancy' or passwd !='':
print ('账号/密码输入错误')
count+=1
else:
print('失败次数超过3次')

 day3:python数据类型

day3-1:#第一个作业
# 1、校验密码是否合法的程序。
# 输入一个密码
# 1、长度5-10位
# 2、密码里面必须包含,大写字母、小写字母和数字
# # http://www.nnzhp.cn/archives/160 取交集的这种方式可以实现
# 3、最多输入5次

lower_letter = []
upper_letter = []
for i in range(ord('a'),ord('z')+1):
lower_letter.append(chr(i))
for i in range(ord('A'),ord('Z')+1):
upper_letter.append(chr(i))
num = {'','','','','','','','','',''}
num = set(num)
lower_letter = set(lower_letter)
upper_letter = set(upper_letter)
# print(num)
# print(lower_letter)
# print(upper_letter)
for i in range(5):
passwd = input('输入密码:').strip()
pd = set(passwd)
if 4<len(passwd)<11:
if pd & lower_letter and pd & upper_letter and pd & num:
print('密码输入成功')
break
else:
print('密码必须包含大小写和数字')
else:
print('密码长度应该为5-10')
continue
else:
print('您输入次数超过5次')

day3-2:

# 写一个录入学生作业情况的一个程序
# 1、查看学生作业情况
# 2、录入学生作业情况
# 3、可以让输入3次,需要为空的情况
# homeworks = {
# '张三':
# {'2018.3.22':"未交",'2018.3.23':'wei交'},
# '田雨':{'2018.3.22':"未交",'2018.3.23':'wei交'},
# }
homeworks = {
'张三': {'已交':'2018.1.23'},
'李四': {'已交':'2018.2.13'},
'王五': {'未交':'2018.3.01'}
}
for i in range(3):
name = input('学生姓名:\n').strip()
submit = input('是否交作业:\n').strip()
date = input('交作业日期:').strip()
if name==''or submit==''or date=='':
print('录入信息不能为空')
elif name in homeworks:
homeworks[name]={submit:date}
print(homeworks)
break
else:
homeworks.setdefault(name,{submit:date})
print(homeworks)
else:
print('输入超过三次,机会已用完')

day4:字符串,文件的操作

day4-1

#1、写一个自动生成密码文件的程序
# 1、你输入几,文件里面就给你产生多少条密码
# 2、密码必须包括,大写字母、小写字母、数字、特殊字符
# 3、密码不能重复
# 4、密码都是随机产生的
# 5、密码长度6-11
# http://www.nnzhp.cn/archives/150
# 随机数怎么用 参考 random模块怎么用
import random,string      #导入random,string模块
lower = string.ascii_lowercase
digits = string.digits
upper = string.ascii_uppercase
pun = string.punctuation
x = lower + digits +upper + pun #定义含大写,小写,数字和特殊字符的字符串
f = open('text.txt','a+') #以a+方式打开文件
num= input('输入您要生成密码的条数:')
for i in range(int(num)):
lens = random.randint(2, 7) #随机选择2—7位长度
other = random.sample(x, lens) #定义other变量为连接随机位数的字符串,从x中截取
passwd =[random.choice(lower), random.choice(digits), random.choice(upper), random.choice(pun)]+other #密码的组成,其中分别从大小写,数字及特殊字符中随机选一个
random.shuffle(passwd) #打乱密码顺序
new_passwd = ''.join(passwd) #将列表转换成字符串
f.write(new_passwd+'\n') #把密码写入文件
f.close() #关闭文件

day4-2

# 写一个注册的程序,账号和密码都存在文件里面。
# choice = input('请输入你的选择:1,注册2、删除用户3、登录')
# #注册
# 输入
# 账号
# 密码
# 密码确认
# # #需要校验用户是否存在,两次输入的密码,是否一致,为空的情况
# #账号和密码都存在文件里面
# #删除
# 输入一个用户名
# #需要校验用户是否存在
# #登录
# 输入账号密码登录
user_info = {}    #定义一个字典,存放username,pwd
with open('users.txt') as f:
for line in f:
line = line.strip() #第一行取到:fancy,123456\n 所以需要把‘\n’去掉
temp = line.split(',') #将取到的每一行放在一个列表里,以逗号分隔
username = temp[0] #取列表的username
pwd = temp[1] #取列表的password
user_info[username] = pwd
for i in range(3):
choice = input('请输入你的选择:1.注册2.删除用户3.登录 \n').strip()
if choice =='':
username = input('账号:\n').strip()
pwd = input('密码:\n').strip()
cpwd = input('重复密码:\n').strip()
if username and pwd and cpwd:
if username in user_info:
print('用户名已存在,请重新注册')
else:
if pwd == cpwd:
user_info[username] = pwd #字典里username的值(即密码)与输入的密码进行比较
print('恭喜你,%s注册成功' %username)
else:
print('两次输入的密码不一致')
else:
print('用户名或密码不能为空')
elif choice == '':
username = input('请输入账号:').strip()
if username:
if username in user_info:
user_info.pop(username)
print(user_info)
print('删除成功')
else:
print('用户名不能为空')
elif choice =='':
username = input('请输入账号:').strip()
pwd = input('请输入密码:').strip()
if username and pwd:
if username in user_info:
if user_info.get(username) ==pwd: #从字典里取password跟输入的密码比对
print('登录成功')
else:
print('账号密码错误')
else:
print('用户名不存在')
else:
print('用户名或密码不能为空')
else:
with open('users.txt','w') as fw: #循环3次结束后,清空文件写进新内容
for uname,pwd in user_info.items(): #把文件清空,写入字典里的最新内容
fw.write(uname+','+pwd+'\n')

day5:函数,文件操作的补充

day5-1

#1、写一个生成双色球号码的一个程序,生成的号码写到文件里面
# 中奖号码由6个红色球号码和1个蓝色球号码组成
# 篮球范围:01-16
# 红球范围:01-33
# def swq(num):
# random.ranint(1,16)
# #tikti.txt
# 篮球:xx 红球号码是xx 01 08 09 12 13 19
# 篮球:xx 红球号码是xx 01 08 09 12 13 19
import random
def ssq():
str_red = []
while len(str_red)!=6:
red = str(random.randint(1, 33)).zfill(2)
if red not in str_red:
str_red.append(red)
blue = str(random.randint(1,16)).zfill(2)
str_reds = ' '.join(str_red)
res = '篮球:%s''\000''红球号码是:%s\n' %(blue,str_reds)
return res
def file(l):
with open('ssq.txt','w',encoding='utf-8') as fa:
fa.writelines(l)
def main():
all_res = []
num = input('输入要生成的条数:').strip()
if num.isdigit():
while int(num)!=len(all_res):
res = ssq()
if res not in all_res:
all_res.append(res)
else:
print('请输入整数')
file(all_res)
main()

day5-2

商品管理的程序,商品信息都存在一个json串里面

1、查询商品信息 #校验商品是否存在
2、新增商品 # #校验商品是否存在 #校验价格是否合法
3、修改商品信息 ##校验商品是否存在
if chice =="1":
query_goods()
elif choice = ="2":
add_goods()

import json

FILE_NAME = 'goods.json'
def op_file(name,content=None):
if content:
with open(name,'w',encoding='utf-8') as fw:
json.dump(content,fw,indent=4,ensure_ascii=False)
else:
with open(name,encoding='utf-8') as fr:
res = json.load(fr)
return res
all_goods = op_file(FILE_NAME) def check_price(price):
price = str(price)
if price.isdigit():
price = int(price)
if price>0:
return True
else:
if price.count('.')==1:
tmp = price.split('.')
#0.0
left = tmp[0]
right = tmp[1]
# 1.00 if left.isdigit() and right.isdigit() and int(right)>0: #1.0
return True
elif left.isdigit() and right.isdigit() and int(left)>0: # 0.1
return True
return False def get_good_info():
while True:
good_name = input('商品名称:').strip()
price = input('price:').strip()
count = input('count:').strip()
color = input('color:').strip()
if good_name and price and count and color:
if not check_price(price):
print('价格输入不合法,必须大于0')
elif not count.isdigit() and int(count)<1:
print('数量不合法')
else:
return good_name,price,count,color
else:
print('输入不能为空!') def add_good():
good_name,price,count,color = get_good_info()
if good_name not in all_goods:
all_goods[good_name]= {
'price':price,
'count':count,
'color':color
}
op_file(FILE_NAME,all_goods)
print('添加完成!')
else:
print('商品已经存在!') def update_good():
good_name,price,count,color = get_good_info()
if good_name in all_goods:
all_goods[good_name]= {
'price':price,
'count':count,
'color':color
}
op_file(FILE_NAME,all_goods)
print('修改完成!')
else:
print('商品不存在!') def query_good():
good_name = input('商品名称:').strip()
if good_name in all_goods:
print(all_goods.get(good_name))
else:
print('商品不存在') def delete_good():
good_name = input('商品名称:').strip()
if good_name in all_goods:
all_goods.pop(good_name)
op_file(FILE_NAME,all_goods)
else:
print('商品不存在') def main():
for i in range(3):
choice = input('请输入你的选择'
'1、添加'
'2、修改'
'3、删除'
'4、查看'
'5、退出')
if choice=="":
add_good()
elif choice=="":
update_good()
elif choice=="":
delete_good()
elif choice=="":
query_good()
elif choice=="":
quit('程序退出')
else:
print('输入错误,请重新输入!')
return main()
main()

day6:操作数据库及常用模块

day6-1

# logs目录下,有一部分文件是空的
# 1、删除log目录下,所有的空文件
# 2、删除5天前的文件
import os,datetime,time
def strToTimestamp(str=None,format='%Y-%m-%d'):
if str: #如果传时间
tp = time.strptime(str,format) #把格式化时间转成时间元组
res = time.mktime(tp) #把时间元组转成时间戳
else:
res = time.time()
return int(res)
def getDate():
before = datetime.datetime.today() + datetime.timedelta(days=-5) #获取5天前的格式化时间
bef = before.strftime('%Y-%m-%d') #截取年月日%Y-%m-%d
new_bef = strToTimestamp(bef) # 5天前的时间,把格式化时间转成时间戳
for abs_path,dir,file in os.walk(r'C:\Users\Fancy\Desktop\liuyuling\day6\logs'):
for f in file:
files = os.path.join(abs_path,f) #拼接文件的绝对路径
size = os.path.getsize(files) #获取文件的size
new_f = f.split('.')[0].split('_')[1] #截取文件名xxxx.log
if size==0:
os.remove(os.path.abspath(files))
continue
if strToTimestamp(new_f)<new_bef:
os.remove(os.path.abspath(files))
print('有内容的文件为:%s' %files)
getDate()

day6-2

# 写代码实现,把我的数据库里面的stu表中的数据,导出到excel中
#编号 名字 性别
#编号 名字 性别
import pymysql,xlwt
def conSql(host,user,passwd,db,sql,port=3306,charset='utf8'):
coon = pymysql.connect(
host='118.24.3.40',user='jxz',passwd='',
port=3306,db='jxz',charset='utf8'
)
cur = coon.cursor() #建立游标
cur.execute('select * from stu') #执行查询语句
data = cur.fetchall() #获取所有结果
return data
cur.close()
coon.close() def importExcel():
book = xlwt.Workbook() #新建一个excel
sheet = book.add_sheet('导入信息') #加sheet页名
data = conSql('118.24.3.40','jxz','','jxz','select * from stu')
# print(type(data)) #打印data的类型为元组
title = ['编号','名字','性别']
for i in range(len(title)): #获取表头的长度
sheet.write(0, i, title[i]) #写表头,0表示写入的是第一行即表头,i表示列,title[i]表示写入的值
for i in range(len(data)):#写内容
if i != 0:#判断如果不是表头,即写内容
for j in range(len(title)):
sheet.write(i, j, data[i][j]) #循环写入每行数据
book.save('importData.xls') #结尾要用.xls结尾
importExcel()

day6-3

# 注册
# 登录
# 数据都存在数据库里面
# id username passwd
# 注册的时候,密码存的是加密之后的密码
# username pwd cpwd, 都是必填的
# 用户不能重复
# 登录
# 账号
# 密码
# 登录成功之后打印当前的日期
import hashlib,time,datetime
def pdMd5(str):
new_str = str.encode() #把字符串转成bytes类型
m=hashlib.md5() #实例化对象
m.update(new_str) #对转换好的bytes类型进行加密
return m.hexdigest()
def usersSelect(): #实现从数据库查出username,passwd
import pymysql
coon = pymysql.connect(
host='118.24.3.40',
user='jxz',
passwd='',
port=3306,
db='jxz',
charset='utf8'
)
cur = coon.cursor()
select =cur.execute("select username,passwd from lyl")
users = cur.fetchall() #获取sql查询结果,结果是一个二维元组
users = dict(users) #将元组转化成字典,方便后面判断username和password
return users
return select
cur.close()
coon.close() def insertSql(username,passwd):
import pymysql
coon = pymysql.connect(
host='118.24.3.40',user='jxz',passwd='',
port=3306,db='jxz',charset='utf8'
)
cur = coon.cursor()
insert = cur.execute("insert into lyl(username,passwd)VALUES('%s','%s')" %(username,passwd))
data = cur.fetchall()
coon.commit() #insert语句时,要使用.commit()方法
# print(data)
cur.close()
coon.close()
def main():
import hashlib
for choice in range(3):
choice = input('请输入你的选择:1注册,2登录').strip()
if choice=='':
username=input('输入用户名:').strip()
if username in usersSelect().keys(): #users要调用
print('该账号已存在,请重新注册')
else:
passwd = input('输入密码:').strip()
cpwd = input('再次输入密码:').strip()
if passwd==cpwd:
md5_pwd = pdMd5(passwd)
insertSql(username,md5_pwd) #把用户名,密码写进数据库,密码加密
print(md5_pwd)
print('恭喜,注册成功')
else:
print('两次密码输入不一致,请重新输入')
if choice=='':
username = input('请输入用户名:').strip()
if username in usersSelect().keys(): #判断username是否存在,存在的话输入密码
passwd = input('请输入密码:').strip()
if usersSelect().get(username)==passwd:
print('恭喜,登录成功%s' %datetime.date.today())
else:
print('密码输入错误,请重新输入')
else:
print('用户名不存在,请重新输入') main()

优化版本:

import hashlib,pymysql,datetime
def my_db(sql):
import pymysql
coon = pymysql.connect(
host='118.24.3.40', user='jxz', passwd='',
port=3306, db='jxz', charset='utf8')
cur = coon.cursor() #建立游标
cur.execute(sql)#执行sql
if sql.strip()[:6].upper()=='SELECT':
res = cur.fetchall()
else:
coon.commit()
res = 'ok'
cur.close()
coon.close()
return res def my_md5(str):
import hashlib
new_str = str.encode() #把字符串转成bytes类型
# new_str = b'%s'%str #把字符串转成bytes类型
m = hashlib.md5() #实例化md5对象
m.update(new_str) #加密
return m.hexdigest() #获取结果返回 def reg():
username = input('username:').strip()
pwd = input('pwd:').strip()
cpwd = input('cpwd:').strip()
if username and pwd and cpwd:
sql = 'select * from nhy where name="%s";'%username
# select * from nhy where name='nhy';
res = my_db(sql)
if res:
print('该用户已经存在!')
else:
if pwd == cpwd:
md5_pwd = my_md5(pwd)
insert_sql = 'insert into nhy (name,pwd) value ("%s","%s");'%(username,md5_pwd)
my_db(insert_sql)
print('注册成功!')
else:
print('两次输入的密码不一致')
else:
print('必填项不能为空!') def login():
username = input('username:').strip()
pwd = input('pwd:').strip()
if username and pwd:
md5_pwd = my_md5(pwd)
sql = 'select * from nhy where name="%s" and pwd="%s";'%(username,md5_pwd)
# select * from nhy where name='nhy';
res = my_db(sql)
if res:
print('欢迎,登录成功!今天是%s'%datetime.date.today())
else:
print('账号/密码错误!')
else:
print('必填项不能为空!')
login()

 day7:操作数据库,Redis,接口开发,操作excel

day7-1:

# 修改excel,把app_student.xls里面的数据,
# 1、如果这一行数据里面有乱码,那么就给他删掉
# 2、再加上一列,是否毕业
# 3、如果班级是天蝎座的话,毕业这一列写成毕业
# 4、其他班级的写成未毕业
import xlrd,xlwt,os
# def main():
book = xlrd.open_workbook('app_student.xls') #读文件
sheet = book.sheet_by_index(0) #获取第一页
book1 = xlwt.Workbook() #新建
sheet1 = book1.add_sheet('sheet1')
header = sheet.row_values(0) #获取表头
header.append('是否毕业') #加一列
for index,h in enumerate(header): #写表头
sheet1.write(0,index,h)
row = 1
for i in range(1,sheet.nrows): #获取每行数据,为一个list,从2行开始循环
line = sheet.row_values(i)
if '?'in str(line):#判断每一行里是否有?
continue
else:
if line[5]=='天蝎座':
line.append('毕业')
else:
line.append('未毕业')
for index,col in enumerate(line): #写入没有乱码的内容
sheet1.write(row,index,col)
row +=1
os.remove('app_student.xls')
book1.save('app_student.xls')
# main()

day7-2:

# 改写注册接口的:
# 1、改写我的注册接口,让它的密码存成密文的。
# 2、数据不再存在mysql里面,存到redis里面,redis的key就用string类型
# 3、lyl 7869d295e566295b51eec5d6bed67c14
# 4、校验用户是否存在
# user:lyl 将实现该功能的文件分类,便于管理和调用,目录列表如下:

分别介绍下各个文件的作用:

1.start.py:启动文件,该程序运行时,只需要运行start.py即可。

2.setting.py:配置文件,把一些具体的配置信息都写在该文件里,其他文件用到时,直接导入后调用即可。

3.interface.py:接口文件,把所有的接口写在该文件里。

4.tools.py:该文件写各种方法,提供被调用,比如该文件里:连接redis函数,加密函数。

5.readme.txt:该文件写一些说明信息,接口信息等。

day8:requests模块,urllib,及异常处理

day8-1:

# http://doc.****.cn/index.php?s=/5&page_id=17
# 这个抽奖接口,每天只能抽奖3次,而且必须先登录才能抽奖
# 写一个函数,让他自动抽奖
# 1、先登录,获取到sign
# 2、然后再调用抽奖接口
# 3、抽奖接口每天只能抽3次,抽奖的时候如果提示你抽奖次数已经用完
# 那么你就连上redis,修改抽奖次数

python 每周作业的更多相关文章

  1. python综合作业要求

    要求: 1.课程成绩数据(学号尾数为0,1同学完成) 至少要完成内容:分析每年不同班级平均成绩情况.不同年份总体平均成绩情况.不同性别学生成绩情况,并用一定图表展示. 2.集美大学各省录取分数数据(学 ...

  2. 短篇文档兼职看过来 python 课后作业 assignment project

    文档兼职 开题报告 读后感 课后作业 等 代写 编程,Java ,Python,R,等语言的,国内外课程作业指导,写作. 有经验,有作品,成交快,放心! 可联系 QQ 550987425

  3. python基础作业1

    目录 附加练习题(提示:一步步拆解) 1.想办法打印出jason 2.想办法打印出大宝贝 3.想办法打印出run 4.获取用户输入并打印成下列格式 5 根据用户输入内容打印其权限 6 编写用户登录程序 ...

  4. python之作业--------购物车优化

    Read Me:继上次简单购物车的实现,有再一次的升级优化了下,现实现以下几个功能: 1.有客户操作和商家操作,实现,客户可以买东西,当金额不足提醒,最后按q退出,打印购物车列表 2.商家可以添加操作 ...

  5. Python之作业购物车

    作业之购物车优化 购物车优化要求如下: 用户入口: 启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就 ...

  6. [ python ] FTP作业进阶

    作业:开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp se ...

  7. [ python ] 练习作业 - 3

    1. 写出Python查找一个变量的顺序 提示:4中作用域的顺序 本地作用域(local) --> 当前作用域被嵌入的本地作用域(enclsing locals) --> 全局/模块作用域 ...

  8. Python爬虫作业

    题目如下:   请分析作业页面(https://edu.cnblogs.com/campus/hbu/Python2018Fall/homework/2420),    爬取已提交作业信息,并生成已提 ...

  9. python习题作业合集(持续更新……)

    作业: 1.简述位,字节关系 2.请写出“天才”分别用utf-8和gbk编码所占位数 3.如果有一个变量num = 14,请使用int的方法,得到改变量最少可以用多少个二进制位表示 4.写代码,有如下 ...

随机推荐

  1. 【学习总结】快速上手Linux玩转典型应用-目录

    内容链接 慕课网:快速上手Linux玩转典型应用 目录 第1章-课程介绍 第2章-linux简介 第3章-CentOS的安装 第4章-准备工作 第5章-远程连接SSH专题 第6章-linux常用命令讲 ...

  2. Python性能分析工具Profile

    Python性能分析工具Profile 代码优化的前提是需要了解性能瓶颈在什么地方,程序运行的主要时间是消耗在哪里,对于比较复杂的代码可以借助一些工具来定位,python 内置了丰富的性能分析工具,如 ...

  3. vimdiff 可视化比较工具

    1.命令功能 vimdiff调用vim打开文件,可以同时打开2~4个文件,最多4个文件,且会以不同的颜色来区分文件的差异. 2.语法格式 vimdiff file1 file2 3.使用范例 [roo ...

  4. P4513 最大连续字段和 (线段树+区间合并)

    题目链接:https://www.luogu.org/problem/P4513 题目大意:单点修改和求区间最大连续字段和 解题思路:很容易想到是用线段树来做,但是如何进行维护呢? 每个维护区间 [L ...

  5. JavaScript秒针转换00:00:00代码

    var str  = realFormatSecond(e.target.currentTime);   console.log(e.target.scrollTop); //1255256252 c ...

  6. 从输入URL到页面加载到底发生了什么

    很多初学网络或者前端的初学者大多会有这样一个疑问:从输入URL到页面加载完成到底发生了什么?总的来说,这个过程分为下面几个步骤:1.DNS解析2.与服务器建立连接3.服务器处理并返回http报文4.浏 ...

  7. zip(), dict(), itertools.repeat(), list(迭代器)

    *. zip(), dict() def demo_zip_dict(): keys = ['a', 'b', 'c'] values = [1, 2, 3] entrys = zip(keys, v ...

  8. 【leetcode】74. Search a 2D Matrix & 240. Search a 2D Matrix II

    题目如下:这两个题目可以用同样的代码来解答,因此就合并在一起了. 题目一: 题目二: 解题思路:两个题目的唯一区别在于第二个题目下一行的最小值不一定会小于前一行的最大值.但是不管怎么样我们可以确定的是 ...

  9. 安卓手机通过有线连接PC上网

    因手机wifi坏了,速度上限为2.5m/s.无法发挥出100m带宽的威力. 这里探索各大神的指导,记录下其中一种方式. :链接       主题:使用openvpn和手机的USB共享网络 通过mico ...

  10. LTM_本地流量管理(二)

    会话保持 首先要熟悉两个概念:连接connect和会话session 连接:在四层负载均衡中,连接是最小元素. l  源端口:客户端随机产生的端口. l  源地址:发起请求的源IP地址. l  目的端 ...