跳转至

考核范围:函数/模块

考核时间:控制在20~45分钟内

建议,考核应有两部分组成:

* 笔试题5~8个编码题
* 问答5个左右

注意:如果,考核题内包含扩展题,需要跟学生说明,做不出来不扣分,做出来加分,并在扩展提前标记,如选做题,扩展题等字样。

考核题参考

(选做题)用map来处理列表,把列表中所有人都变成xx_666,如张开_666,
name = ["张开", "李开", "王开", "赵开"]

(选做题)使用map来处理列表,将列表中每个人的名字都变成以xx_666,如张开_666
tmp_list = [{'name': '张开'}, {'name': '李开'}, {'name': '王开'}, {'name': '赵开'}]

(选做题)将下面的列表内的元素以age升序排序:
tmp_list = [
    {'name': '张开', 'age': 18}, {'name': '李开', 'age': 8},
    {'name': '王开', 'age': 32}, {'name': '赵开', 'age': 25}
]
请将时间'2018-11-11 11:11:11'转换成时间戳时间

使用函数完成三次登录,要求是用户名和密码都保存在一个info.txt中,info.txt自行创建
    info文件内容格式如下:
        zhangkai|123
        likai|123
        root|123
    且info.txt文件中存储有多个用户名和和密码,每个用户名和密码占用一行。
    三次登录失败即退出程序。

文件操作,使用Python将图片新建一个副本,比如有图片a,使用Python得到新的图片b

使用相关模块生成6为的验证码,得到的验证码必须是字符串,而且必须包括随机数字、随机小写字符、随机大写字符

实现一个统计函数执行时间的装饰器

写函数,接收两个数字参数,将较小的数字返回.

如何获取当前脚本的绝对路径

如何获取当前脚本的父级目录



有派3.1415926  如何保留小数位? 请用内置函数实现,注意不能使用切片,也不能使用字符串格式化

什么是可迭代对象(问答题,可先略过)

什么是迭代器(问答题,可先略过)

可迭代对象和迭代器的区别是什么(问答题,可先略过)

什么是生成器,如何得到一个生成器

写函数,完成给一个列表去重的功能。(不能使用set集合)[1,2,2,1,3,4,5,6]



有d = {'a': 1, 'b': 2, 'c': 3},请使用json将它序列化到文件

使用列表解析式(生成式)和range得到这样一个列表[1,4,9,16,25,36,49]

答案参考

```python """ 用map来处理列表,把列表中所有人都变成xx_666,如张开_666, name = ["张开", "李开", "王开", "赵开"] """

name = ["张开", "李开", "王开", "赵开"]

print(list(map(lambda x: x + '_666', name)))

""" 使用map来处理列表,将列表中每个人的名字都变成以xx_666,如张开_666 tmp_list = [{'name': '张开'}, {'name': '李开'}, {'name': '王开'}, {'name': '赵开'}] """

tmp_list = [{'name': '张开'}, {'name': '李开'}, {'name': '王开'}, {'name': '赵开'}]

print(list(map(lambda x: x['name'] + '_666', tmp_list)))

""" 将下面的列表内的元素以age升序排序: tmp_list = [     {'name': '张开', 'age': 18}, {'name': '李开', 'age': 8},     {'name': '王开', 'age': 32}, {'name': '赵开', 'age': 25} ] """

tmp_list = [

{'name': '张开', 'age': 18}, {'name': '李开', 'age': 8},

{'name': '王开', 'age': 32},

]

tmp_list.sort(key=lambda x: x['age'], reverse=False)

print(tmp_list)

""" 请将时间'2018-11-11 11:11:11'转换成时间戳时间

思路 字符串时间 --> 结构化时间   --> 时间戳时间

""" import time t = '2018-11-11 11:11:11' tmp = time.strptime(t, '%Y-%m-%d %H:%M:%S') print(time.mktime(tmp))  # 1541905871.0

from datetime import datetime time_str = '2018-11-11 11:11:11' t1 = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S") t2 = datetime.timestamp(t1) print(t2) """ 使用函数完成三次登录,要求是用户名和密码都保存在一个info.txt中,     且info.txt文件中存储有多个用户名和和密码,每个用户名和密码占用一行。     三次登录失败即退出程序。 """ """

info.txt

zhangkai|123 likai|234 wangkai|345 """

------------ 第一版 ------------

PATH = r'./info.txt'

def read_file(path):     with open(path, 'r', encoding='utf-8') as f:         l = []         for i in f:             name, pwd = i.strip().split("|")             l.append({"user": name, "pwd": pwd})         return l

def login():     user_list = read_file(PATH)     count = 1     while count <= 3:         user = input('user: ').strip()         pwd = input('pwd: ').strip()         for i in user_list:             if user == i['user'] and pwd == i['pwd']:                 print('login successful')                 break         else:             print('login error')             count += 1

if name == 'main':     login()

------------ 第二版 ------------

PATH = r"D:\路飞相关\info.txt"

def read_file(path):     with open(path, 'r', encoding='utf-8') as f:         d = {}         for i in f:             name, pwd = i.strip().split("|")             d[name] = pwd         return d

def login():     user_dict = read_file(PATH)     count = 1     while count <= 3:         user = input('user: ').strip()         if user_dict.get(user, None):             pwd = input('pwd: ').strip()             if user_dict.get(user) == pwd:                 print('login successful')                 break             else:                 print('login error')         else:             print('login error')             count += 1

if name == 'main':     login()

""" 递归统计指定目录下的文件个数,不允许使用os.wolk """

import os

def foo(path):

if os.path.isdir(path):

total = 0

for line in os.listdir(path):

tmp_path = os.path.join(path, line)

if os.path.isdir(tmp_path):

total += foo(tmp_path)

else:

total += 1

return total

else:

exit('给定的路径不是目录')

if name == 'main':

print(foo(r"D:\tmp"))

""" 文件操作,使用Python将图片新建一个副本,比如有a.jpg,使用Python得到副本b.jpg """ with open('a.jpg', 'rb') as rf:     with open('b.jpg', 'wb') as wf:         wf.write(rf.read()) """ 使用相关模块生成6为的验证码,得到的验证码必须是字符串,而且必须包括随机数字、随机小写字符、随机大写字符 """ import random import string

法1

def code(n=6):     end = ''     for i in range(n):         num = str(random.randint(0, 9))         alpha_up = chr(random.randint(65, 90))         alpha_low = chr(random.randint(97, 122))         aim = random.choice([num, alpha_up, alpha_low])         end += aim     return end

print(code(6))  # 传几位就生成几位验证码

# 法2

def foo(n):     return ''.join(random.sample(string.digits + string.ascii_lowercase + string.ascii_uppercase, n)) print(foo(6))

法3

import itertools lis=list(itertools.chain(string.digits,string.ascii_uppercase,string.ascii_lowercase)) list1=random.sample(lis,6) s=''.join(list1) print(s)

""" 实现一个统计函数执行时间的装饰器 """ import time import random

def timmer(func):     def wrapper(args, kwargs):         start = time.time()         res = func(args, **kwargs)         print('{} running time {}'.format(func__name__, time.time() - start))         return res     return wrapper

@timmer def foo():     time.sleep(random.random()) foo() """ 写函数,接收两个数字参数,将较小的数字返回. """

def foo(x, y):

return y if x > y else x

print(foo(3, 6))

print(foo(6, 3))

""" 如何获取当前脚本的绝对路径     """

import os

print(os.path.abspath(file))

""" 如何获取当前脚本的父级目录 """

import os

print(os.path.abspath(file))

print(os.path.dirname(os.path.abspath(file)))

""" 有派3.14  如何去掉小数位? 请用内置函数实现,注意不能使用切片 """

print(round(3.14))

""" 什么是可迭代对象    什么是迭代器         可迭代对象和迭代器的区别是什么 什么是生成器,如何得到一个生成器 """

如果一个对象具有__iter__方法,则称为可迭代对象

可迭代对象执行__iter__方法返回的结果称为迭代器

可迭代对象只有__iter__方法,而迭代器则有__iter__、__next__两个方法。

函数体内包含有yield关键字,那么该函数被称为生成器函数,而该函数执行的结果(返回值generator_obj)为生成器

https://www.cnblogs.com/Neeo/articles/13200309.html

https://www.cnblogs.com/Neeo/articles/13200313.html

生成器的优势:https://www.cnblogs.com/Neeo/articles/10788573.html

""" 写函数,完成给一个列表去重的功能。(不能使用set集合)[1,2,2,1,3,4,5,6] """ def foo(l): tmp_list = [] for i in l: if i not in tmp_list: tmp_list.append(i) return tmp_list print(foo([1, 2, 2, 1, 3, 4, 5, 6])) """ 有d = {'a': 1, 'b': 2, 'c': 3},请将它序列化到文件 """

import json

d =

with open('a.txt', 'w', encoding='utf-8') as f:

json.dump(d, f)

""" 使用列表解析式(生成式)和range得到这样一个列表[1,4,9,16,25,36,49] """

print([i ** 2 for i in range(1, 8)])