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模块作业的更多相关文章

  1. Python:Day20 模块

    模块是用来组织函数的. 模块一共3种: python标准库 第三方模块 应用程序自定义模块 模块搜索路径:sys.path import sys print(sys.path) import calc ...

  2. day20 模块-sys,time,collection

    所有常用模块的用法:  http://www.cnblogs.com/Eva-J/articles/7228075.html 前情回顾: # 常用模块 # 常用模块 —— 东西多 # 异常处理 # 什 ...

  3. day20 模块 collections time sys os

    1.模块 1. 模块的定义:我们把装有特定功能的代码进行归类的结果.我们目前写的所有py文件都是模块 2. 引入模块的方式: 1.import 模块名 2.from xxx import 模块名 2. ...

  4. 常用模块Part(1)

    collections模块 time模块 random模块 os模块 sys模块 collections模块 这个模块实现了一些很好的数据结构,它们能帮助你解决各种实际问题 在这里主要介绍几种数据结构 ...

  5. python(31)- 模块练习

    1. 小程序:根据用户输入选择可以完成以下功能:     创意文件,如果路径不存在,创建文件夹后再创建文件     能够查看当前路径     在当前目录及其所有子目录下查找文件名包含指定字符串的文件 ...

  6. [ python ] 学习目录大纲

    简易博客[html+css]练习 MySQL 练习题及答案 MySQL视图.触发器.函数.存储过程 MySQL 操作总结 Day41 - 异步IO.协程 Day39/40 - 线程的操作 Day36/ ...

  7. 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】

    点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...

  8. Python学习进程

    1周第1天 主要是变量的学习(11月8日) 1.1 python安装(win和linux下)1.2 ipython安装及使用1.3 变量的定义1.4 变量赋值1.5 运算符(赋值.算术.关系.逻辑)1 ...

  9. Linux - 请允许我静静地后台运行

    h1,h2,h3,h4,h5,h6,p,blockquote { margin: 0; padding: 0 } body { font-family: "Helvetica Neue&qu ...

随机推荐

  1. unity破解步骤

    1.选择unity的安装目录 C:\Programe Files (x86)\Unity\Editor 2.点击patch 3.使用random生成序列号 4.使用Cre Lic生成授权文件

  2. AAC_LC用LATM封装header信息解析 Audio Specific Config格式分析

    通常来说AAC的头信息在编解码过程中是可以获取到的,但今天需要根据音频参数生成相应的AAC头.项目中使用的是AAC_LC,今天先对它的结构进行分析. 项目中使用ffmpeg进行音频编码,音频编码库为F ...

  3. NYOJ-小猴子下落

    描述 有一颗二叉树,最大深度为D,且所有叶子的深度都相同.所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1.在结点1处放一个小猴子,它会往下跑.每个内结点上都有一个开关,初始全部 ...

  4. P1030 求先序排列

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...

  5. vue-router路由嵌套的使用

    vue-router路由嵌套的使用,以及子路由中设置默认路由: 项目结构: 在/src/App.vue文件中: <template> <div id="app"& ...

  6. Wireshark抓取本地Tcp包(任何数据包)

    没有任何一个程序员在做项目的时候不会遇到网络编程的问题,要解决这些问题除了对各种网络协议深入了解之外,还需要掌握各种网络分析工具的用法,不用多说wireshark绝对是这方面的翘楚,可惜的是,wire ...

  7. TS学习之Symbol

    symbol成为了一种新的原生类型,就像number和string一样(意思是可以像string一样,作为对象的属性等) Symbols是不可改变且唯一的 //symbol通过Symbol函数构造,但 ...

  8. Android Studio的Android Monitor窗口中把标签拉出来之后放不回去的解决方法

    不小心把下图方框中的logcat标签拖出来之后, 就变成了图2的浮动窗口,发现logcat标签怎么也弄不回原来窗口中的位置中. 其实解决方法很简单,只要拖住下图浮动窗口中红框位置的logcat标签,然 ...

  9. String/ StringBuilder/ StringBuffer

    1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...

  10. [转载][效率工具推荐]Mathpix – 将图片数学公式转换为 LaTeX

    转自小众软件:Mathpix – 将图片数学公式转换为 LaTeX Mathpix 是一款跨平台(Windows.macOS.Linux)的 OCR 工具,它能够识别复杂的数学公式,并将其转换为 La ...