题目

3.编写一个名为 make_shirt() 的函数,它接受一个尺码以及要印到 T 恤上的字样。这个函数应打印一个句子,概要地说明 T 恤的尺码和字样。使用位置实参调用这个函数来制作一件 T 恤;再使用关键字实参来调用这个函数

4.修改函数 make_shirt() ,使其在默认情况下制作一件印有字样 “I love Python” 的大号 T 恤。调用这个函数来制作如下 T 恤:一件印有默认字样的大号 T恤、一件印有默认字样的中号 T 恤和一件印有其他字样的 T 恤(尺码无关紧要)

7.编写一个名为 make_album() 的函数,它创建一个描述音乐专辑的字典。这个函数应接受歌手的名字和专辑名,并返回一个包含这两项信息的字典。使用这个函数创建三个表示不同专辑的字典,并打印每个返回的值,以核实字典正确地存储了专辑的信息。给函数 make_album() 添加一个可选形参,以便能够存储专辑包含的歌曲数。
如果调用这个函数时指定了歌曲数,就将这个值添加到表示专辑的字典中。调用这个函数,并至少在一次调用中指定专辑包含的歌曲数

9.写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容

12.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。PS:字典中的value只能是字符串或列表

13.写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者

14.编写一个函数,将一辆汽车的信息存储在一个字典中。这个函数总是接受制造商和型号,还接受任意数量的关键字实参。这样调用这个函数:提供必不可少的信息,以及两个名称—值对,如颜色和选装配件。这个函数必须能够像下面这样进行调用:car = make_car(‘subaru’, ‘outback’, color=‘blue’, tow_package=True)

15.创建一个包含魔术师名字的列表,并将其传递给一个名为show_magicians() 的函数,这个函数打印列表中每个魔术师的名字。编写一个名为make_great() 的函数,对魔术师列表进行修改,在每个魔术师的名字中都加入字样“the Great”。调用函数show_magicians() ,确认魔术师列表确实变了

16.随机生成20个学生的成绩并判断输出这20个学生成绩的等级

代码:

'''3.编写一个名为 make_shirt() 的函数,它接受一个尺码以及要印到 T 恤上的字样。
这个函数应打印一个句子,概要地说明 T 恤的尺码和字样。
使用位置实参调用这个函数来制作一件 T 恤;再使用关键字实参来调用这个函数'''

'''解析:
位置实参:位置参数,指的是必须按照正确的顺序将实际参数传到函数中,换句话说,调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致。
关键字实参:以名称一一对应的方式传入的参数叫关键字参数,而位置可以不必相同'''


def make_shirt(size, text):
    print(size, text)


# 位置实参调用:
make_shirt(35, '都很高')

# 关键字实参调用:
make_shirt(text='话费', size=45)

'''4.修改函数 make_shirt() ,使其在默认情况下制作一件印有字样 “I love Python” 的大号 T 恤。
调用这个函数来制作如下 T 恤:一件印有默认字样的大号 T恤、一件印有默认字样的中号 T 恤和一件印有其他字样的 T 恤(尺码无关紧要)。'''


# 带有默认参数的函数:
def make_shirt(size='big', text='I love Python'):
    print(size, text)


# 一件印有默认字样的大号 T恤
make_shirt()

# 一件印有默认字样的中号 T 恤
make_shirt(size='m')

# 一件印有其他字样的 T 恤(尺码无关紧要)
make_shirt(text='十二集')

'''7.编写一个名为 make_album() 的函数,它创建一个描述音乐专辑的字典。
这个函数应接受歌手的名字和专辑名,并返回一个包含这两项信息的字典。
使用这个函数创建三个表示不同专辑的字典,并打印每个返回的值,以核实字典正确地存储了专辑的信息。
给函数 make_album() 添加一个可选形参,以便能够存储专辑包含的歌曲数。
如果调用这个函数时指定了歌曲数,就将这个值添加到表示专辑的字典中。
调用这个函数,并至少在一次调用中指定专辑包含的歌曲数。'''

# 带有可选形参的函数:
# 解析:
'''可选参数(就是默认参数)可以不传入值,而必须参数(就是不带默认值的参数)必须传入值
可选参数后面不能有必须参数(就是可选参数应该统一放在所有参数的最后)'''


def make_album(name, zhuan_ji, num=None):
    if num == 0:
        dict = {'name': name, 'zhuan_ji': zhuan_ji}
    else:
        dict = {'name': name, 'zhuan_ji': zhuan_ji, 'zhuan_ji_num': num}
    print(dict)


make_album('小明', '摩羯座')
make_album('小李', '处女座')
make_album('李华', '天天', 12)

'''9.写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容'''


def search_None(list_str_tuple):
    if None or '' in list_str_tuple:
        print('有空内容')
    else:
        print('没有空内容')


search_None([1, 2, '', 2])

'''12.写函数,检查传入字典的每一个value的长度,
如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
PS:字典中的value只能是字符串或列表'''


def exam(dist):
    # 得到字典的所有key:
    key_list = dist.keys()

    # 遍历字典:
    for key in key_list:
        if len(dist[key]) > 2:  # 如果value的值大于2
            dist[key] = dist[key][:2]  # 只保留两个长度

    print(dist)
    return dist


exam({1: 'sgeg', 2: [1, 2, 3], 3: 'a'})

'''13.写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者'''


def Fibonacci(n):
    if n == 1 or n == 2:
        one = 1
        return one
    else:
        return Fibonacci(n - 1) + Fibonacci(n - 2)


for i in range(3, 11):
    print(Fibonacci(i))

'''14.编写一个函数,将一辆汽车的信息存储在一个字典中。
这个函数总是接受制造商和型号,还接受任意数量的关键字实参。
这样调用这个函数:提供必不可少的信息,以及两个名称—值对,如颜色和选装配件。
这个函数必须能够像下面这样进行调用:car = make_car('subaru', 'outback', color='blue', tow_package=True)'''

# 解析:
'''任意数量的关键字实参:就是带有关键词的不定长参数,使用**kwargs来表示。'''


def make_car(product_name, type_, **kwargs):
    dict = {
        'product_name': product_name,
        'type': type_,
    }
    for key, value in kwargs.items():  # items()函数一列表形式返回可遍历的(键、值)元组数据,'a':'b' 或者 'a' = 'b' 都会返回成[('a','b')]
        dict[key] = value
    return dict


car = make_car('subaru', 'outback', color='blue', tow_package=True)
print(car)

'''15.创建一个包含魔术师名字的列表,并将其传递给一个名为show_magicians() 的函数,
#这个函数打印列表中每个魔术师的名字。
编写一个名为make_great() 的函数,对魔术师列表进行修改,
# 在每个魔术师的名字中都加入字样“the Great”。
调用函数show_magicians() ,确认魔术师列表确实变了。'''

name_list = ['a', 'b', 'c', 'd', 'e']


def show_magicians(name_list):
    for item in name_list:
        print(item)


def make_great(name_list):
    for i in range(0, len(name_list)):
        name_list[i] = 'the Great ' + name_list[i]


show_magicians(name_list)
make_great(name_list)
show_magicians(name_list)

'''16.随机生成20个学生的成绩并判断输出这20个学生成绩的等级。'''
import random


def score():
    student_list = []
    for i in range(20):
        score_ = round(random.uniform(0, 100), 2)  # round(number,num)函数,让number保留num位小数
        student_list.append(score_)
    for item in student_list:
        if item >= 90:
            print(item, 'A')
        elif item >= 80:
            print(item, 'B')
        elif item >= 60:
            print(item, 'C')
        else:
            print(item, 'D')


score()