2020/12/10

Python 16期 Day13作业

题目1

编写文件修改功能,调用函数时,传入三个参数(修改的文件路径,要修改的内容,修改后的内容)既可完成文件的修改

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""题目作答区!"""

def alter_file(url, old, new):
    import os
    with open(r'%s' % url, mode='rt', encoding='utf-8') as read_f, \
            open(r'%s$' % url, mode='wt', encoding='utf-8') as write_f:
        for line in read_f:
            write_f.write(line.replace(old, new))
    os.remove(r'%s' % url)
    os.rename(r'%s$' % url, r'%s' % url)

题目2

编写tail工具

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""题目作答区!"""

def tail(url):
    import time
    with open(r'%s'%url,mode='rb') as f:
        f.seek(0,2)
        while True:
            line = f.readline()
            if len(line) == 0:
                time.sleep(0.2)
            else:
                print(line.decode('utf-8'),end='')

题目3

编写登录功能

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""题目作答区!"""

def login(url):
    while True:
        user = input('请输入账号:')
        pwd = input('请输入密码:')

        with open(r'%s'%url, mode='r', encoding='utf-8') as f:
            for i in f:
                i = i.strip().split(':')
                if user == i[0]:
                    if pwd == i[1]:
                        return user
                    else:
                        print('密码错误')
                        break
            else:
                print('用户名不存在')

题目4

编写注册功能

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""题目作答区!"""

def register(url):
    while True:
        print('输入exit退出')
        user = input('请输入新用户名:')
        pwd1 = input('请输入密码:')
        pwd2 = input('请确认密码:')
        
        if pwd1 != pwd2:
            print('两次输入密码输入不同,请重新输入!')

        else:
            with open(r'%s'%url, mode='rt', encoding='utf-8') as f1:
                for i in f1:
                    if i.strip().split(':')[1] == user:
                        print('用户名已存在,请重新输入!')
                        break
                else:
                    with open(r'%s'%url, mode='at', encoding='utf-8') as f2:
                        f2.write("%s:%s\n" % (user, pwd1))
                            return user

题目5

写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""题目作答区!"""

def count(strs):
    cint, cletter, cspace, cother = 0, 0, 0, 0
    for i in strs:
        if i.isdigit():
            cint += 1
        elif i.isalnum():
            cletter += 1
        elif i.isspace():
            cspace += 1
        else:
            cother += 1
    print('数字有%s个,字母有%s个,空格有%s个,其他的有%s个。' % (cint, cletter, cspace, cother))

题目6

写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""题目作答区!"""

def len5(target):
    return True if len(target) > 5 else False

题目7

写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""题目作答区!"""

def list2(l):
    return l if len(l) <= 2 else l[0:2]

题目8

写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""题目作答区!"""

def odd_digit(l):
    return [l[i] for i in range(1, len(l), 2)]

题目9

写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""题目作答区!"""

def value2(d):
    for i in d:
        if len(d[i]) > 2:
            d[i] = d[i][0:2]
    return d

题目10

编写计数器功能,要求调用一次在原有的基础上加1

# 温馨提示
# 需要用到的知识点:闭包函数+nonlocal
# 核心功能如下:
def counter():
	x+=1
	return x
要求最终效果类似
print(couter()) # 1
print(couter()) # 2
print(couter()) # 3
print(couter()) # 4
print(couter()) # 5
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""题目作答区!"""

def couter2():
    count = 0

    def couter1():
        nonlocal count
        count += 1
        return count

    return couter1

posted @ 2020-12-10 16:01  最冷不过冬夜  阅读(164)  评论(0)    收藏  举报