• 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("	"*n,name,":")
                func(abs_path,n+1)      #递归,n:层数,多一层多一个 "	"
            else:
                print("	"*n,name)
    

    ret = func('E:S15day1')

    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:S15day20')

    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:S15day201.内容回顾.txt',r'E:S15day19')

    5.

    def get_cwd(path):
    return os.path.dirname(path)
    ret = get_cwd('E:S15day20')

    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)

  • 相关阅读:
    关于色彩空间 color space的faq
    opensuse11 DNS不稳定的问题
    Streaming MPEG4 with Linux
    在RELEASE版本中快速定位DATA ABORT的方法 zt
    YUV / RGB 格式及快速转换算法zt
    角色转变——从工程师到项目经理(转)
    coredll.lib(COREDLL.dll) : fatal error LNK1112: module machine type 'THUMB' conflicts with target machine type 'ARM'
    勿使用浮点运算
    DirectShow中常见的RGB/YUV格式
    基于Linux系统核心的汉字显示的尝试zt
  • 原文地址:https://www.cnblogs.com/byho/p/10796585.html
Copyright © 2020-2023  润新知