2-2-03-01 函数-参数作业

4. 作业

4.1 请定义一个函数,用于计算一个字符串中字符a出现的次数并通过return返回。

  • 参数,字符串。

  • 返回值,字符串中 a 出现的次数。

答案:

def stra(ti):
    count = 0
    for i in ti:
        if i == "a":
            count += 1
    return count

result = stra("weialsdfasdsa")
print(result)

4.2 写函数,判断用户传入的一个值(字符串或列表或元组任意)长度是否大于5,并返回真假。

def data(a1):
    if len(a1) > 5:
        return True
    return False

result = data("dsdfewjiojfiw")
print(result)

4.3 写函数,接收两个数字参数,返回比较大的那个数字(等于时返回两个中的任意一个都可以)

def num(num1,num2):
  	""" 大小比较函数 """
    if num1 > num2:
        return num1
    return num2

data = num(88,55)
print(data)

4.4 写函数,函数接收四个参数分别是:姓名,性别,年龄,学历,然后将这四个值通过"*"拼接起来并追加到一个student_msg.txt文件中。

def student(name,gender,age,degree):
	"""  拼接函数 """
    data_list = [name,gender,age,degree]
    data = "*".join((data_list))
    with open('student_msg.txt',mode='a',encoding='utf-8') as file_object:
        file_object.write(data)

write_file("xxx","男","78","本科")

4.5 补充代码,实现如下功能:

  • 【位置1】读取文件中的每一行数据,将包含特定关键的数据筛选出来,并以列表的形式返回。
  • 【位置1】文件不存在,则返回None
  • 【位置2】文件不存在,输出 "文件不存在",否则循环输出匹配成功的每一行数据。
def select_content(file_path,key):
    # 补充代码【位置1】

result = select_content("files/xxx.txt","股票")
# 补充代码【位置2】

答案:

import os

def select_content(file_path,key):
  """ 用于筛选特定关键字并以列表返回的函数 """
    if not os.path.exists(file_path):
        return 
    data_list = []
    with open(file_path,mode='r',encoding='utf-8') as file_object:
        for line in file_object:
            if key in line:
                data_list.append(line)
    return data_list

result = select_content("files/xxx.txt","股票")
# result=[] 为空也算存在
if result ==None:
    print("文件不存在")
else:
    print(result)

4.6 补充代码,实现敏感词替换的功能。

def change_string(origin):
    # 补充代码,将字符串origin中中的敏感词替换为 **,最后将替换好的值返回。 
    data_list = ["苍老师","波多老师","大桥"]
    
text = input("请输入内容:")
result = change_string(text)
print(result)

答案:

def change_string(origin):
 	"""敏感词替换函数"""
    data_list = ["苍老师", "波多老师", "大桥"]
    for item in data_list:
        origin = origin.replace(item, "**")
    return origin

text = input("请输入内容:")
result = change_string(text)
print(result)

4.7 基于函数实现用户认证,要求:

  • 写函数,读取的用户信息并构造为字典(用户信息存放在files/user.xlsx文件中)

![[assets/Pasted image 20221015132127.png]]

# 构造的字典格式如下
user_dict = {
    "用户名":"密码"
    ...
}

用户输入用户名和密码,进行校验。(且密码都是密文,所以,需要将用户输入的密码进行加密,然后再与Excel中的密文密码进行比较)

import hashlib

def encrypt(origin):
    origin_bytes = origin.encode('utf-8')
    md5_object = hashlib.md5()
    md5_object.update(origin_bytes)
    return md5_object.hexdigest()


p1 = encrypt('admin')
print(p1) # "21232f297a57a5a743894a0e4a801fc3"

p2 = encrypt('123123')
print(p2) # "4297f44b13955235245b2497399d7a93"

p3 = encrypt('123456')
print(p3) # "e10adc3949ba59abbe56e057f20f883e"

答案:

import hashlib
from openpyxl import load_workbook

def users():
    """ 用于定义字典函数 """
    user_dict = {}
    wb = load_workbook("files/user.xlsx")
    sheet = wb.worksheets[0]
    for row in sheet.rows:
        user_dict[row[1].value] = row[2].value
    return user_dict

def encrypt(origin):
    """ 密码加密函数 """
    origin_bytes = origin.encode('utf-8')
    md5_object = hashlib.md5()
    md5_object.update(origin_bytes)
    return md5_object.hexdigest()

name = input("请输入用户名:")
pwd = input("请输入密码:")
#调用加密函数将用户密码转换成密文
encrypt_password = encrypt(pwd)
# 获取所有的用户信息
user_dir = users()
#根据用户名去获取Excel里面的密码
db_password = user_dir.get(name)
# Excel里面的密码和加密的密码进行比较,用密文比较
if encrypt_password == db_password:
    print("用户登录成功")
else:
    print("用户登录失败")

补充作业

1. 看代码写结果

def func(*args,**kwargs):
    print(args,kwargs)
    
params = {"k1":"v2","k2":"v2"}
func(params)    # ({"k1":"v2","k2":"v2"}, ) {}
func(**params)  # (), {"k1":"v2","k2":"v2"}

2. 读取文件中的 URL 和 标题,根据URL下载视频到本地(以标题作为文件名)。

模仿,https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300f570000bvbmace0gvch7lo53oog&ratio=720p&line=0
卡特,https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f3e0000bv52fpn5t6p007e34q1g&ratio=720p&line=0
罗斯,https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f240000buuer5aa4tij4gv6ajqg&ratio=720p&line=0

答案:

import requests

def download(title,url):
	"""下载并保存视频"""
	res = requests.get(
	    url=url,
	    headers={
	        "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 FS"
	    }
	)
	with open('{}.mp4'.format(title), mode='wb') as f:
	    f.write(res.content)


#读取文件
with open('db.csv',mode='r',encoding='utf-8') as file_object:
	for line in file_object:
		line = line.strip()
		row_list=line.split(',')
		# download(row_list[0],row_list[1])
		download(*row_list)
posted @ 2022-10-19 09:40  布丁家的苏苏  Views(3)  Comments(0)    收藏  举报