30天学习Python系列第12篇:模块内容练习题参考答案

2023-10-21 19:38:49 浏览数 (2)

全民都在这次开放中等着进决赛,可惜笔者没那么强的抵抗力。上周不幸中招整个人都迷糊糊的。没有精气神,也不想拿这事做营销。只想告诉大家最好防护能别得就别得。得了也不要乱用药(且不说现在买不到药)物理降温,多补水保持营养进食很重要。

模块的内容就是练习引用,所以就不将每个题拆开了,这里先创建一个自定义py文件,名称可以叫做“modules.py”并实现所有题目的函数。

代码语言:javascript复制
import string
import random

def random_user_id():
    '''
    随机生成6位字符(包括字母和数字)
    :return: 6位ID
    '''
    lowercase_and_number = string.ascii_lowercase   string.digits
    six_id = ""
    for i in range(6):
        index = random.randint(0, len(lowercase_and_number) - 1)
        six_id = six_id   lowercase_and_number[index]
    return six_id


def user_id_gen_by_user():
    '''
    获取用户给定两个数生成对应数量的用户ID
    :return: 用户ID列表
    '''
    str_num = int(input("输入字符数量:"))
    id_num = int(input("输入生成的ID数量:"))
    letters_and_number = string.ascii_letters   string.digits
    user_id_list = []
    for i in range(id_num):
        user_id = ""
        for s in range(str_num):
            index = random.randint(0, len(letters_and_number) - 1)
            user_id = user_id   letters_and_number[index]
        user_id_list.append(user_id)
    return user_id_list


def rgb_color_gen():
    '''
    生成一个RGB颜色
    :return: 三位数RGB元组
    '''
    items = list()
    for i in range(3):
        item = random.randint(0, 255)
        items.append(item)

    rgb = tuple(items)
    return rgb


def list_of_hexa_colors(number):
    '''
    生成指定数量的16进制的颜色组
    :param number: 数量
    :return: hexa颜色组
    '''
    color_charts = ['a', 'b', 'c', 'e', 'f', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
    hexa_list = []
    for i in range(number):
        num = 0
        hexa_color = '#'
        while num < 6:
            index = random.randint(0, len(color_charts) - 1)
            hexa_color = hexa_color   color_charts[index]
            num  = 1
        hexa_list.append(hexa_color)

    return hexa_list


def list_of_rgb_colors(number):
    '''
    生成指定数量的RGB颜色组,并且格式化为rgb(106,227,72)
    :param number: 数量
    :return: rgb颜色组
    '''
    rgb_list = []

    for num in range(number):
        item = 0
        rgb = "rgb("
        while True:
            rgb = rgb   str(random.randint(0, 255))
            item  = 1
            if item < 3:
                rgb = rgb   ','
            else:
                break
        rgb = rgb   ")"
        rgb_list.append(rgb)

    return rgb_list


def generate_colors(color_type, number):
    '''
    按照指定类型返回数组颜色
    :param color_type: 颜色类型
    :param number: 颜色数量
    :return: 颜色组
    '''
    if color_type == 'hexa':
        return list_of_hexa_colors(number)
    elif color_type == 'rgb':
        return list_of_rgb_colors(number)

def shuffle_list(input_list):
    '''
    使用random内置函数直接返回打乱顺序的列表
    :param input_list:
    :return: 列表
    '''
    tmp_list = input_list
    random.shuffle(tmp_list)
    return tmp_list

def random_seven_number():
    '''
    利用random内置函数sample,从一个总体序列或集合中选择k个唯一的随机元素。
    :return:
    '''
    numbers = list(range(0, 10))
    unique_items = random.sample(numbers, 7)
    return unique_items

然后就是在使用此文件函数的进行导入。这里不在代码体现的,均默认为直接导入所有,在每道题练习的时候请尝试不同的导入方式。

代码语言:javascript复制
from modules import *  #引用全部函数

「练习 1.1」 编写一个 random_user_id 函数,它的功能是随机生成6位字符(包括字母和数字)

代码语言:javascript复制
from modules import random_user_id
print("随机生成6位用户ID:", random_user_id())

「练习 1.2」 声明一个名为 user_id_gen_by_user 的函数。它不设置参数,但它使用input() 接受两个输入。其中一个输入是字符的数量,第二个输入是应该生成的id的数量

代码语言:javascript复制
user_ids = user_id_gen_by_user()
for user_id in user_ids:
    print(user_id)

「练习1.3」 编写一个名为 rgb_color_gen 函数。它将生成rgb颜色(3个值,每个值从0到255)

代码语言:javascript复制
import modules as md
print("rgb随机颜色:", md.rgb_color_gen())

「练习2.1」 编写一个函数 list_of_hexa_colors,它返回数组中任意数量的十六进制颜色(在#之后写入的六个十六进制数)。十六进制数字系统由16个符号组成,0-9和字母表的前6个字母a-f

代码语言:javascript复制
print("返回两组HEXA颜色:", list_of_hexa_colors(2))

「练习2.2」 编写一个函数 list_of_rgb_colors,它返回任意数量的RGB颜色数组。

代码语言:javascript复制
print("返回两组RGB颜色:", list_of_rgb_colors(2))

「练习2.3」 写一个函数 generate_colors,它可以生成任意数量的hexa或rgb颜色

代码语言:javascript复制
print("hexa,3:", generate_colors('hexa', 3))
print("hexa,1:", generate_colors('hexa', 1))
print("rgb,3:", generate_colors('rgb', 3))
print("rgb,1:", generate_colors('rgb', 1))

「练习3.1」 调用你的编写的函数 shuffle_list,它接受一个列表作为参数,并返回一个打乱的列表

代码语言:javascript复制
original_list = [1, 2, 3, 4, 5, 6]
print("初始顺序:", original_list)
print("打乱后顺序:", shuffle_list(original_list))

「练习3.2」 编写一个函数,返回由0-9范围内的7个随机数组成的数组。所有的数字必须是唯一的

代码语言:javascript复制

from modules import random_seven_number as rsn
print("随机7位唯一数列表:", rsn())

比较上篇练习,这次有不少初级算法题在里边了。但都没有超出之前所学的知识范围。所以没有理解或不熟练一定要亲自动手多多做几遍,如果你最后能用笔纸轻松的写出来,那我要给你大大的赞了。

0 人点赞