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)

最新文章

  1. jquery属性的操作
  2. 一种基于annotation的Spring-mvc权限控制方法
  3. 1031MySQL事务隔离级别详解
  4. JavaScript与DOM
  5. Awesome C/C++
  6. 【OpenGL】交互式三次 Bezier 曲线
  7. Linux rabbitmq的安装和安装amqp的php插件
  8. HDU 5676 ztr loves lucky numbers (模拟)
  9. Zend框架2入门(二) (转)
  10. 8.2.1.1 Speed of SELECT Statements 加速SELECT 语句
  11. 读书笔记:《梦断代码Dreaming in Code》
  12. 《You dont know JS》值相关总结
  13. 本地创建yum源并安装lnmp
  14. 【PYTHON】递加计数器
  15. (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  16. InstallShield Limited Edition for Visual Studio 使用
  17. nmap 介绍
  18. PHP Socket 编程进阶指南
  19. 转:vue+element实现树形组件
  20. udp用户数据报协议

热门文章

  1. 第十七章-异步IO
  2. OpenCV——非线性滤波器
  3. JS字符串类型转日期然后进行日期比较
  4. [转]django 日志logging的配置以及处理
  5. 构建嵌入式小型Linux系统
  6. POJ2442:Sequence
  7. POJ1379:Run Away
  8. 用Word编辑cnblogs的博文并发布
  9. py xrange
  10. Web Pages(单页面模型)