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)