[Python学习日记-57] 常用模块的练习
简介
本篇是常用模块的练习题,主要用于巩固前面学习的函数内容,建议先自己做一遍,最后再对答案,这样会比较稳固。
题目
1、导入模块的方式有哪几种,官方不推荐哪种?
2、如何让你写的模块可以被系统上任何一个 .py 文件导入?
3、写一个用户登录验证程序,文件名为 account.json,内容如下
{"expire_date":"2021-01-01","id":1234,"status":0,"pay_day":22,"password":"abc"}
- 根据用户输入的用户名和密码,找到对应的 json 文件,把数据加载出来进行验证
- 用户名为 json 文件名,密码为 password
- 判断是否过期,与 expire_date 进行对比
- 登陆成功后,打印“登陆成功”,三次登陆失败,status 值改为1,并且锁定账号
4、把第3题用户密码进行 hashlib 加密处理。即:json 文件里的密码保存为 md5 的值,然后用 md5 的值进行验证账号信息是否正确。
5、最近 jove 买了个 Ford Bronco Raptor,通过转账的形式付款,并且支付了5%的手续费,Ford Bronco Raptor 价格为130万。账户文件为 json,请用程序实现该转账行为。
- 目录结构为
|—— account
| |—— jove.json
| |—— ford_company.json
|
|—— bin
| |—— start.py
当执行 start.py 时,出现交互窗口
------ ICBC Bank------
1.账户信息
2.转账
- 选择1:账户信息,显示 jove 的当前账户余额
- 选择2:转账,直接扣掉130万和利息费用并且 ford_company 账户增加130万
6、对第5题增加一个提现需求。
- 目录结构为
|—— account
| |—— jove.json
| |—— ford_company.json
|
|—— bin
| |—— start.py
|
|—— core
| |—— withdraw.py
- 选择1:账户信息,显示 jove 的当前账户余额和信用额度
- 选择2:提现,提现金额应小于等于信用额度,利息为5%,提现金额为用户自定义
- 提现代码的实现要写在 withdraw.py 里
7、尝试把上一章的验证用户登陆的装饰器添加到提现和转账的功能上。
8、对第7题的用户转账、登录、提现操作均记录日志,日志文件位置如下
|—— account
| |—— jove.json
| |—— ford_company.json
|
|—— bin
| |—— start.py
|
|—— core
| |—— withdraw.py
|
|—— logs
| |—— bank.log
日志格式如下
20241026 18:34:23 jove transfer transfered to [ford_company] with amount RMB130
20241026 14:21:15 jove withdraw withdraw cash RMB800,intrest is RMB40.
20241025 22:27:19 jove consume consumed cash RMB600 in shop [浪险猴洗浴中心]
答案(答案更新中)
1、导入模块的方式有哪几种,官方不推荐哪种?
导入模块的方式有3种,分别是:
# 第1种
impot module_a # 导入模块(这个模块可以是一个文件夹或者只是一个 .py 文件)
# 第2种
from module import xx # 导入模块中的一个子模块或者函数
from module.xx.xx import xx # 导入多层结构的模块
from module.xx.xx import xx as rename # 导入后重命名
# 第3种
from module.xx.xx import * # 导入一个模块下的所有方法,不建议使用
官方不推荐第3种,因为这种方式会导入模块中的所有名称,可能会导致命名冲突或者不必要的变量覆盖。
2、如何让你写的模块可以被系统上任何一个 .py 文件导入?
只需要把你写的模块放置到 \your_python_install_path\Lib\site-packages(第三方库)中,就可以被系统上任何一个 .py 文件导入。
3、
4、
5、
6、
7、
8、