Python课程设计 第 11 / 52 篇
函数概述-参考答案
作业1
写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成修改操作
解析思路参考:

import os
def modify_file(file_name, old_content, new_content):
with open(file_name, mode='rt', encoding='utf-8') as read_f, \
open('%s.swap' % file_name, mode='wt', encoding='utf-8') as write_f:
for line in read_f:
if old_content in line:
line = line.replace(old_content, new_content)
write_f.write(line)
os.remove(file_name)
os.rename('%s.swap' % file_name, file_name)
modify_file('db.txt', '马一特', '马一特[Albert]')
作业2
写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
解题思路参考:
以使用string的isalpha()等方法判断字符属于字母或者空格;
还有一种方法,由于小写字母和大写字母的ASCII码都是连续的,可以用两个列表表示AZ和az,然后用char in lst的方式判断,可以尝试一下。

def calculate_count(data_str):
dict_count = {'alpha': 0, 'number': 0, 'space': 0, 'other': 0}
for i in data_str:
if i.isalpha():
dict_count['alpha'] += 1
elif i.isdigit():
dict_count['number'] += 1
elif i is ' ':
dict_count['space'] += 1
else:
dict_count['other'] += 1
return dict_count
res = calculate_count('32441adhjf ^&%$#@()*')
print(res)
作业3
写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
解题思路参考:

def judge_length(data):
if len(data) > 5:
return True
else:
return False
res1 = judge_length('sahdlfk')
res2 = judge_length([12, 2, 3, ])
res3 = judge_length((2, 3, 4, 5, 6, 5,))
print(res1)
print(res2)
print(res3)
作业4
写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
解题思路参考:

def check_up_list(data_list):
if len(data_list) > 2:
return data_list[:2]
res1 = check_up_list([1, 2, 3, 4, 4, 5, ])
res2 = check_up_list(['a', 'v', 'v', 'e'])
res3 = check_up_list(['x', ])
print(res1)
print(res2)
print(res3)
作业5
写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
解题思路参考:

def get_odd_list(data):
odd_list = []
for i in data:
if data.index(i) % 2:
odd_list.append(i)
return odd_list
print(get_odd_list([1, 2, 3, 4, ]))
print(get_odd_list((13, 4322, 2333, 114,)))
print(get_odd_list(['a', 'b', 'c', 'd']))
作业6
写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dict1 = {"k1": "v1v1", "k2": [11, 22, 33, 44], 'k3': (9, 8, 7, 65, 4)}
解题思路:
结合作业4 、5 以及字典 key value 的遍历方法完成。
dict1 = {"k1": "v1v1", "k2": [11, 22, 33, 44], 'k3': (9, 8, 7, 65, 4)}
def check_up_list(data_dict):
for key, value in data_dict.items():
if len(value) > 2:
data_dict[key] = value[:2]
return data_dict
res = check_up_list(dict1)
print(res)