day20模块作业
1.模块化作业
1.回顾文件递归遍历. 默写一遍.
入口在: 当文件是个文件夹的时候
出口在: 文件是一个文件
2.计算时间差(用户输入起始时间和结束时间. 计算时间差(小时),
例如, 用户输入2018-10-08 12:00:00 2018-10-08 14:30:00 输出2小时
3.写一个函数,接收一个参数,如果是文件,就执行这个文件,如果是文件夹,就执行这个文件夹下的所有的py文件。
4.写一个copy函数,接受两个参数,第一个参数是源文件的位置,第二个参数是目标位置,将源文件copy到目标位置。
5.获取某个文件所在目录的上一级目录。
30分
6.使用os模块创建如下目录结构
# glance
# ├── __init__.py
# ├── api
# │ ├── __init__.py
# │ ├── policy.py
# │ └── versions.py
# ├── cmd
# │ ├── __init__.py
# │ └── manage.py
# └── db
# ├── __init__.py
# └── models.py
7.写一个用户注册登陆的程序,每一个用户的注册都要把用户名和密码用字典的格式写入文件userinfo。在登陆的时候,再从文件中读取信息进行验证。
8.使用random模块,编写一个发红包的函数
2.作业详解
点击查看详细内容
#1.
import os
def func(path,n=0):
path_list = os.listdir(path) #1.打开文件夹,查看当前目录的文件
for name in path_list: #2.遍历文件名
abs_path = os.path.join(path,name) #3.文件绝对路径
if os.path.isdir(abs_path):
print("\t"*n,name,":")
func(abs_path,n+1) #递归,n:层数,多一层多一个 "\t"
else:
print("\t"*n,name)
ret = func('E:\S15\day1')
2.
import time
start_time = time.strptime('2018-10-08 12:00:00','%Y-%m-%d %H:%S:%M')
end_time = time.strptime('2018-10-08 14:30:00','%Y-%m-%d %H:%S:%M')
sub_time = time.mktime(end_time) - time.mktime(start_time)
gm_time = time.gmtime(sub_time)
print('过去了%d年%d月%d日%d时%d分%d秒'%(gm_time.tm_year-1970,gm_time.tm_mon-1,
gm_time.tm_mday-1,gm_time.tm_hour,
gm_time.tm_min,gm_time.tm_sec))
3.
思路:
#先判断这个path是文件还是文件夹
#如果是文件:.py结尾的,执行文件:os.system('python path')
#如果是文件夹:查看文件夹下的所有内容,如果是文件.py结尾则执行
import os
def exec_py(path):
if os.path.isfile(path) and path.endswith('.py'):
os.system('python %s'%path)
elif os.path.isdir(path):
path_list = os.listdir(path)
for name in path_list:
abs_path = os.path.join(path,name)
if os.path.isfile(abs_path) and abs_path.endswith('.py'):
os.system('python %s'%abs_path)
elif os.path.isdir(abs_path):
exec_py(abs_path)
exec_py(r'E:\S15\day20')
4.
def copy(path1,path2):
filename = os.path.basename(path1)
if os.path.isfile(path1) and os.path.isdir(path2):
path2 = os.path.join(path2,filename)
if os.path.exists(path2):
print('文件已存在')
else:
with open(path1,'rb') as f1,
open(path2,'wb') as f2:
content = f1.read()
f2.write(content)
copy(r'E:\S15\day20\01.内容回顾.txt',r'E:\S15\day19')
5.
def get_cwd(path):
return os.path.dirname(path)
ret = get_cwd('E:\S15\day20')
6.
os.makedirs('glance/api')
os.makedirs('glance/cmd')
os.makedirs('glance/db')
open('glance/init.py','w').close()
open('glance/api/init.py','w').close()
open('glance/api/policy.py','w').close()
open('glance/api/versions.py','w').close()
open('glance/cmd/init.py','w').close()
open('glance/cmd/manage.py','w').close()
open('glance/db/init.py','w').close()
open('glance/db/models.py.py','w').close()
7.
思路:
import pickle
def enrol():
username = input("Input Username:")
password = input("Input Password:")
dic = {'usr':username,'pwd':password}
with open('userinfo','ab') as f:
pickle.dump(dic,f)
print('注册成功')
enrol()
def login():
username = input("Input Username:")
password = input("Input Password:")
with open('userinfo','rb') as f:
while True:
try:
str_dic = pickle.load(f)
if str_dic['usr'] == username and str_dic['pwd'] == password:
print('登陆成功')
break
except EOFError:
print('登陆失败')
break
login()
8.发红包
import random
def send_money(money,num):
money = money * 100 #整数进两位,后面算出小数
ret = random.sample(range(1,money),num-1)
ret.sort()
ret.insert(0,0)
ret.append(money)
#print(ret)
for i in range(len(ret)-1):
yield (ret[i+1] - ret[i])/100
ret_g = send_money(200,10)
for i in ret_g:
print(i)
day20模块作业的更多相关文章
- Python:Day20 模块
模块是用来组织函数的. 模块一共3种: python标准库 第三方模块 应用程序自定义模块 模块搜索路径:sys.path import sys print(sys.path) import calc ...
- day20 模块-sys,time,collection
所有常用模块的用法: http://www.cnblogs.com/Eva-J/articles/7228075.html 前情回顾: # 常用模块 # 常用模块 —— 东西多 # 异常处理 # 什 ...
- day20 模块 collections time sys os
1.模块 1. 模块的定义:我们把装有特定功能的代码进行归类的结果.我们目前写的所有py文件都是模块 2. 引入模块的方式: 1.import 模块名 2.from xxx import 模块名 2. ...
- 常用模块Part(1)
collections模块 time模块 random模块 os模块 sys模块 collections模块 这个模块实现了一些很好的数据结构,它们能帮助你解决各种实际问题 在这里主要介绍几种数据结构 ...
- python(31)- 模块练习
1. 小程序:根据用户输入选择可以完成以下功能: 创意文件,如果路径不存在,创建文件夹后再创建文件 能够查看当前路径 在当前目录及其所有子目录下查找文件名包含指定字符串的文件 ...
- [ python ] 学习目录大纲
简易博客[html+css]练习 MySQL 练习题及答案 MySQL视图.触发器.函数.存储过程 MySQL 操作总结 Day41 - 异步IO.协程 Day39/40 - 线程的操作 Day36/ ...
- 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】
点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...
- Python学习进程
1周第1天 主要是变量的学习(11月8日) 1.1 python安装(win和linux下)1.2 ipython安装及使用1.3 变量的定义1.4 变量赋值1.5 运算符(赋值.算术.关系.逻辑)1 ...
- Linux - 请允许我静静地后台运行
h1,h2,h3,h4,h5,h6,p,blockquote { margin: 0; padding: 0 } body { font-family: "Helvetica Neue&qu ...
随机推荐
- PS 滤镜——水波 water wave
%%%% Water wave %%%% 制作水波效果 clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Process ...
- Web视频播放 之 【HTML5 Video标签】
一.说明 HTML5中引入了video标签用于方便的在浏览器中播放视频,不在需要对flashPlayer进行依赖,更加轻量级.但在浏览器兼容.视频协议支持方面还有一些需要注意的问题. 二.浏览器兼容 ...
- Arc071_F Infinite Sequence
传送门 题目大意 给定一个数$n$,构造一个无限长的序列$A$,使得 $\forall i,j\geq n,A_i=A_j$ $\forall i<j<k\leq i+a_i,A_j=A_ ...
- Hihocoder1662 : 查找三阶幻方([Offer收割]编程练习赛40)(暴力)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个N x M的矩阵,请你数一数其中有多少个3 x 3的子矩阵可以构成三阶幻方? 如果3 x 3的矩阵中每一行.每一列 ...
- 扩展欧几里得算法(exgcd)
Bezout定理: 对于任意整数a,b,存在一对整数x,y满足:a*x+b*y=gcd(a,b) 证明如下: 在欧几里得算法的最后一步:b=0,即:gcd(a,0)=a 对于b>0,根据欧几里得 ...
- cmdb1--介绍
背景:现在运维管理服务器多数使用Excel表来维护,而且是多人来维护,造成信息不统一,所以要将信息入库,并方便后续的批量操作 1.cmdb主要分3块: a.采集信息程序 b.API提供接口 c.后台管 ...
- mina中的发送延时
由于项目需要,用到了 mina 框架进行 tcp 通讯.我是初次接触 mina,于是从 Hello world 开始学习了 mina .期间遇到了一个奇怪的发送数据的延迟问题,解决的过程是曲折的,但找 ...
- C#设计模式(11)——外观模式
一.概念 外观模式提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使用.使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直 ...
- 浏览器怎么禁用和开启Javascript
转自;http://360.bgu.edu.cn/help/openJsHelp.html IE内核的浏览器禁用和启用Javascript功能都类似,首先我们需要打开IE8浏览器. 之后点击其右上角的 ...
- CSS之边距合并
外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 情况1:当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元 ...