Python课程设计 第 11 / 52 篇

函数概述-参考答案

作业1

写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成修改操作

解析思路参考:

image.png

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的方式判断,可以尝试一下。

image.png

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。

解题思路参考:

image.png

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,那么仅保留前两个长度的内容,并将新内容返回给调用者。

解题思路参考:

image.png

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

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

解题思路参考:

image.png

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)