第四章节练习

3、json、pickle、shelve三个区别是什么?

json:适用于各种语言

pinkle:只使用与python

shelve:?

4、json的作用是什么?

序列化和反序列化

 

10、写一个6位随机验证码程序(使用random模块),要求验证码中至少包含一个数字、一个小写字母、一个大写字母

# 写一个6位随机验证码程序(使用random模块),要求验证码中至少包含一个数字、一个小写字母、一个大写字母
import random
import string
digit=string.digits+string.ascii_lowercase+string.ascii_uppercase
digit1 = string.digits
digit2 = string.ascii_lowercase
digit3 = string.ascii_uppercase
digit = list(digit)
digit1_1 = list(digit1)
digit2_2 = list(digit2)
digit3_3 = list(digit3)
random.shuffle(digit)
random.shuffle(digit1_1)
random.shuffle(digit2_2)
random.shuffle(digit3_3)
print("".join(random.sample(digit1_1,1)+random.sample(digit2_2,1)+random.sample(digit3_3,1)+random.sample(digit,3)))

11、利用正则表达式提取到 luffycity.com ,内容如下

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>luffycity.com</title>
</head>
<body>
</body>
</html>

 

s ='''
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>luffycity.com</title>
</head>
<body>
</body>
</html>
'''
import  re
match_s = re.findall('<title>(.*?)</title>',s)
print(match_s[0])

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.导入模块的方式有哪几种,官方不推荐哪种?

import 模块

from 模块.xxx.xxx import xx as rename     

from   模块.xx.xx  import  *   导入一个模块下的所有方法,不建议时用

2.如何让你写的模块可以被系统上任何一个py文件导入

>>> import sys
>>> print(sys.path)
['', 'D:\\py\\python37\\python37.zip', 'D:\\py\\python37\\DLLs', 'D:\\py\\python37\\lib', 'D:\\py\\python37', 'D:\\py\\python37\\lib\\site-packages']

把模块放到这个路径下,就可以实现被任意调用:

'D:\\py\\python37\\lib\\site-packages'

3.写一个用户登录验证程序,文件名account.json,内容如下

{“expire_date”: “2021-01-01”, “id”: 1234, “status”: 0, “pay_day”: 22, “password”: “abc”}

⑴ 根据用户输入的用户名&密码,找到对应的json文件,把数据加载出来进行验证

⑵ 用户名为json文件名,密码为 password。

⑶判断是否过期,与expire_date进行对比

⑷ 登陆成功后,打印“登陆成功”,三次登陆失败,status值改为1,并且锁定账号。

 

import os
import time
import json

exit_flag = 0
count = 0
while count < 3:
    user = input("请输入用户名:")
    f = user.strip()+'.json'
    if os.path.exists(f):
        fp = open(f,"r+",encoding='utf-8')
        j_user = json.load(fp)
        print(j_user)
        if j_user["status"]==1:
            print('账户已经锁定')
        else:
            expire_dt = j_user['expire_date']
            current_st = time.time()
            expire_st = time.mktime(time.strptime(expire_dt,'%Y-%m-%d'))
            print(expire_st,current_st)
            if current_st > expire_st:
                print("用户已经过期")
                break
            else:
                while count < 3:
                    pwd = input("请输入密码")
                    if pwd.strip()==j_user["password"]:
                        print("用户[%s]登录成功"%user)
                        exit_flag = True
                        break
                    else:
                        print("密码错误")
                        if count == 2:
                            print('用户登录已经超过3次,锁定账号')
                            j_user['status'] = 1
                    count +=1
    if exit_flag:
        break
    else:
        print("用户不存在")
        count +=1

  

4.把第3题用户密码进行hashlib加密处理。即:json文件里的密码保存为md5的值,然后用md5的值进行验证账号信息是否正确

5.最近alex买了个Tesla Model S,通过转账的形式,并且支付了5%的手续费,tesla价格为95万。账户文件为json,请用程序实现该转账行为。

需求如下:

  • 目录结构为

 

 当执行start.py时,出现交互窗口

   ———- ICBC Bank ————-
  1.  账户信息
  2.  转账

选择1 账户信息 显示alex的当前账户余额

选择2 转账 直接扣掉95万和利息费用并且tesla_company账户增加95万

  1.对上题增加一个需求:提现。

    目录结构如下

    

 

     当执行start.py时,出现交互窗口

    

 

 

选择1 账户信息 显示alex的当前账户余额和信用额度。

选择2 提现 提现金额应小于等于信用额度,利息为5%,提现金额为用户自定义。

体现代码的实现要写在withdraw.py里

6.尝试把上一章的验证用户登陆的装饰器添加到提现和转账的功能上。

7.对第6题的用户转账、登录、提现操作均记录日志,日志文件位置如下

 

 日志格式如下

20190502 18:34:23  alex   transfer      transfered to  [tesla_company]  with amount RMB950000, intrest is RMB47500.
20190812 14:21:15  alex   withdraw      withdraw cash RMB800, intrest is RMB40.
20190815 22:27:19  alex   consume      consumed cash RMB600 in shop [神仙岛洗浴中心], intrest is RMB0.

 

 

作业

题目:网站访问日志分析

需求

  1. 统计本日志文件的总pv、uv

  2. 列出全天每小时的pv、uv数

  3. 列出top 10 uv的IP地址,以及每个ip的pv点击数

  4. 列出top 10 访问量最多的页面及每个页面的访问量

  5. 列出访问来源的设备列表及每个设备的访问量

日志格式解释

 

 

名词解释:

pv:page visit , 页面访问量,一次请求就是一次pv

uv: user visit, 独立用户,一个ip就算一个独立用户

http://hcdn1.luffycity.com/data/course_related/72/courseware/%E8%AF%BE%E4%BB%B6.zip

 

转载于:https://www.cnblogs.com/hantongxue/p/11487110.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值