考核范围:函数/模块
考核时间:控制在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] """