python面试_总结02_代码题
- 代码题
1、创建一个函数,接收一个字符串参数,判断其做为Python标识符是否合法。
具体要求:
- 如果合法则输出 True,否则输出 False。
- 如果该字符串与Python内置的关键字,或Bifs冲突,则打印'conflict'
- 注: Python标识符的规则,关键字和Bifs可搜索得到
- import keyword, string
- print(keyword.kwlist)
- print()
- print(string.ascii_letters)
- print()
- print(string.digits)
- ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else',
'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
'return', 'try', 'while', 'with', 'yield']- abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
- 0123456789
- import keyword, string
- def Identifier(s):
- kw = keyword.kwlist # 内置关键字
- # 请用if-else完成检测,打印conflict或者False
- # your code here
- # 标识符命名规范
- # 1.数字,下划线,字母构成
- # 2.避开关键字,这里s != kw
- # 3.不能用数字开头
- # 不能是关键字
- if s in kw:
- print(s, "标识符不能是关键字")
- return False
- # 开头必须是字母或者下划线
- elif s[0] == "_" or s[0] in string.ascii_letters:
- # 除开头以外,必须是数字+下划线+字母
- for i in s[1:]:
- if (i == "_") or (i in string.digits) or (i in string.ascii_letters):
- pass
- else:
- print(s, "既不是关键字,开头也合法,但是后面有非法字符")
- return False
- print(s, "合法的标识符")
- return True
- else:
- print(s, "不是关键字,开头已经不合法(后面不晓得)")
- return False
- print("01", Identifier("list"))
- print("02", Identifier("abc#"))
- print("03",Identifier("1a"))
- list 合法的标识符
- 01 True
- abc# 既不是关键字,开头也合法,但是后面有非法字符
- 02 False
- 1a 不是关键字,开头已经不合法(后面不晓得)
- 03 False
2、编写一个函数,能生成包含20个随机整数的列表,然后将前10个元素升序排列,后10个元素降序排列,并分别打印输出
提示:本题考察对列表的切片和排序操作,注意切片下标。
- import random
- def sort2part():
- # 用random生成20个随机数并完成本题要求
- # your code here
- # 创建一个列表用于保存随机数
- total_list = []
- list_asc = []
- list_dec = []
- # 1、生成20个随机数
- for i in range(20):
- total_list.append(random.randint(1, 20))
- print("生成的随机数列表是这个样子:", total_list)
- # 2、对列表进行切片
- list_asc = total_list[:10]
- list_dec = total_list[10:]
- print("切片后前10的列表:", list_asc)
- print("切片后后10的列表:", list_dec)
- assert len(list_asc) + len(list_dec) == len(total_list), "长度需要满足一致"
- # 3、分别进行排序
- list_asc = sorted(list_asc)
- list_dec = sorted(list_dec, reverse=True)
- print("升序后前10的列表:", list_asc)
- print("降序后后10的列表:", list_dec)
- return
- sort2part()
3、有一分数序列为:2/1,3/2,5/3,8/5,13/8,21/13, 请使用Python代码生成,并打印该数列的前30(演示代码取5项)项,并求和返回
提示:观察分数的分子和分母,每1项都和前2项有关系,也可检索“斐波那契数列”
- # 显示分数的包
- import fractions
- from functools import reduce
- def fab(max_num):
- # 完成分子分母的生成并计算求和返回结果
- # your code here
- # 创建列表保存数据
- _list = []
- # 1、首先生成斐波那契数列
- a = 1 # 注意这里a从1开始
- b = 1
- for i in range(max_num):
- # a是分母,b是分子
- a, b = b, a + b
- '''
- 上式等同于下面3式:
- temp = b
- b = a + b
- a = temp
- '''
- # print("a = ", a, "b = ", b)
- # 2、生成分数
- _list.append(fractions.Fraction(b, a))
- # _list.append(b / a)
- print("看一眼生成的列表长啥样:", _list)
- # 分数要遍历才能打印...
- for elm in _list:
- print(elm)
- assert len(_list) == max_num, "长度一致"
- # 3、求前30项的和
- sum_ = reduce(lambda x, y: x + y, _list)
- return sum_
- print("该数列的前5项和: ",fab(5))
- 看一眼生成的列表长啥样: [Fraction(2, 1), Fraction(3, 2), Fraction(5, 3), Fraction(8, 5), Fraction(13, 8)]
- 2
- 3/2
- 5/3
- 8/5
- 13/8
- 该数列的前5项和: 1007/120
4、BMI编写
身体质量指数(BMI)是根据人的体重和身高计算得出的一个数字,BMI是可靠的身体肥胖指标,其计算公式:BMI = Weight / High2,其中体重单位为公斤,身高单位为米。
计算公式为:BMI=体重(kg)÷ 身高2(m)
提示用户输入体重(kg)和身高的数字(m)(注意单位),然后计算BMI。
根据BMI指数范围,定义当前健康状态。BMI指数在18至25之间定义为健康的标准体重, 小于该范围定义为偏瘦,超过该范围定义为偏重。
将BMI指数和其所代表状态输出
- weight = float(input('请输入您的体重:'))
- high = float(input('请输入您的身高:'))
- # 完成BMI计算并返回结果提示信息
- # your code here
- high = high / 100
- BMI = weight / (high ** 2)
- if 18 <= BMI <= 25:
- print("您的身体质量指数是:%.2f, 很健康哦" % BMI)
- elif BMI < 18:
- print("您的身体质量指数是:%.2f, 有些偏瘦哦" % BMI)
- else:
- print("您的身体质量指数是:%.2f, 你这个胖纸" % BMI)
- 请输入您的体重:65
- 请输入您的身高:173
- 您的身体质量指数是:21.72, 很健康哦
5、字符统计
- 创建一个函数,接收字符串输入,分别统计出其中英文字母、空格、数字和其它字符的个数后打印。
- 提示:
- ord('a') 能将字符 'a' 转化为 ASCII 码表上对应的数值,
- 例如,空格为32
- 数字 0-9 对应的码值为 48-57
- 大写字母 A-Z 对应 65-90
- 小写字母 a-z 对应 97-122
- 比122高的都是其它。
- def str_count(s):
- # 完成对应要求的统计,并返回对应的数量
- # your code here
- # 初始化计数变量
- count_s, count_z, count_a, count_o = 0, 0, 0, 0
- for i in s:
- # 得到对应ASCII码的数值
- num_asc = ord(i)
- if num_asc == 32:
- count_s += 1
- elif 48 <= num_asc <= 57:
- count_z += 1
- elif 65 <= num_asc <= 90 or 97 <= num_asc <= 122:
- count_a += 1
- elif num_asc > 122:
- count_o += 1
- # assert (count_s + count_z + count_a + count_o) == total_num, "最终个数相符"
- print("空格个数:%d个" % count_s)
- print("数字个数:%d个" % count_z)
- print("英文字母个数:%d个" % count_a)
- print("其他字符个数:%d个" % count_o)
- str_count("我是xiao ming ming, 今年27岁")
- 空格个数:3个
- 数字个数:2个
- 英文字母个数:12个
- 其他字符个数:5个
6、创建一个函数,可以将去除给定列表中中相邻且重复的元素(只保留一个)后,打印输出结果。
- 说明
- 输入参数为 l1 = [1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13]
- 操作后,保证原有整体排序不变,仅处理相邻且重复的元素
- 请勿使用set
- def remove_same(ll):
- # 完成题目要求的任务,并返回结果
- # your code here
- # 逆序,这样就不会出现下标溢出的情况
- for i in range(len(ll) - 1, 0, -1):
- # print("现在到了第%d步" % i)
- print(ll)
- if ll[i] == ll[i-1]:
- # 删除相邻且重复的元素
- del ll[i]
- return ll
- lst = [4,4,5,6,5,6,6,8,7,8,12,12]
- # lst = [1,1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13]
- # lst1 = [1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13, 4, 8, 4, 12, 13, 13, 17, 3, 3, 3]
- print(remove_same(lst))
- [4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12, 12]
- [4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12]
- [4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12]
- [4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12]
- [4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12]
- [4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12]
- [4, 4, 5, 6, 5, 6, 8, 7, 8, 12]
- [4, 4, 5, 6, 5, 6, 8, 7, 8, 12]
- [4, 4, 5, 6, 5, 6, 8, 7, 8, 12]
- [4, 4, 5, 6, 5, 6, 8, 7, 8, 12]
- [4, 4, 5, 6, 5, 6, 8, 7, 8, 12]
- [4, 5, 6, 5, 6, 8, 7, 8, 12]
7、创建一个函数,接收一个由整数组成的列表(需对输入列表做检查,长度最少为2, 数据类型为整型),并检验后下列条件后输出:
- 如列表是升序排列的,则输出"ASC";
- 如列表是降序排列的,则输出"DESC";
- 如列表无序,则输出"WRONG"。
- def check_data(l):
- # 请完成题目要求的任务,并输出对应信息
- # your code here
- # 得到列表的总长度
- count = len(l)
- if count < 2:
- print("长度不够,短拒")
- return None
- # 判断数据类型是否位int
- for i in range(count):
- if not isinstance(l[i], int):
- print("数据类型有非int型")
- return None
- # 判断是否是升序
- if sorted(l) == l:
- print("ASC")
- # 判断是否降序
- elif sorted(l, reverse=True) == l:
- print("DESC")
- # 无序
- else:
- print("WRONG")
- check_data([1])
- check_data([1,"2"])
- check_data([1,2,3,4])
- check_data([4,3,2,1])
- check_data([1,3,2,4])
- 长度不够,短拒
- 数据类型有非int型
- ASC
- DESC
- WRONG
8、高阶函数综合运用
l1=[1,3,6,8,10,11,17]
请仅使用map,reduce,filter对上方数组依次进行如下三次操作:
剔除掉所有的偶数后打印
对剩下的数字每个数字进行平方后打印
对数组求和后打印
- # 剔除掉所有的偶数后打印
- # your code here
- l1=[1,3,6,8,10,11,17]
- print("原始的l1:", l1)
- def f(x):
- return x % 2 != 0
- l1 = list(filter(f, l1))
- print("剔除偶数后的l1:", l1)
- 原始的l1: [1, 3, 6, 8, 10, 11, 17]
- 剔除偶数后的l1: [1, 3, 11, 17]
- # 对剩下的数字每个数字进行平方后打印
- # your code here
- print("现在的l1:", l1)
- l1 = list(map(lambda x: x ** 2, l1))
- print("求平方后的l1:", l1)
- 现在的l1: [1, 3, 11, 17]
- 求平方后的l1: [1, 9, 121, 289]
- # 对数组求和后打印
- # your code here
- print("现在的l1:", l1)
- # 对数组中国的数求和
- from functools import reduce
- l1_sum = reduce(lambda x, y: x + y, l1)
- print("所求数字之和:", l1_sum)
- 现在的l1: [1, 9, 121, 289]
- 所求数字之和: 420
9、Python类设计
设计一个公司类,完成以下要求,并实例化不同对象进行验证
类变量
- 类下公司的总个数,类下公司实例的名称列表
类方法
- 返回公司类共有多少个公司实例
- 返回公司类的公司实例有名称列表
实例变量
- 公司名,简介,利润,销售额,总成本,雇员姓名列表,雇员详细信息列表(这里可能会考察到*号对参数解包)
实例方法:
- 招聘人才(每招一个人会有成本产生,影响该实例雇员列表、人数、总成本,默认成本cost=10000)
- 解雇人员(每解雇一个人会有成本产生,影响该实例雇员列表、人数 、总成本,默认成本cost=5000)
- 公司广告推广(影响该实例总成本,自定义成本cost)
- 交社保(按公司雇员总人数计算,影响该实例总成本,默认单人社保缴纳1000)
- 交税(按公司雇员总人数计算,影响该实例总成本,默认单人税费缴纳500)
- 销售(按销售件数*价格计算销售额,利润按销售额*利润率进行计算利润。默认利润率50%)
- 获取公司雇员列表
- 获取公司净利润
提示:具体的函数方法与变量定义,请参考下述实例化代码确定。初始化雇员的地方,大家看到调用的时候会包含年龄等信息,这里可能会用到不定长参数输入,详细可以参考python参数说明(https://blog.csdn.net/qinyilang/article/details/5484415)
- class Company(object):
- # 完成题目对应的要求
- # your code here
- # 类变量: 类下公司的总个数,类下公司实例的名称列表
- companyNum = 0
- companyList = []
- def __init__(self, companyName, brief, profit=0, sale_=0, cost=0, name_list=[], *args):
- '''
- 实例变量
- 公司名,简介,利润,销售额,总成本,雇员姓名列表,雇员详细信息列表(这里可能会考察到*号对参数解包)
- '''
- # 公司名
- self.companyName = companyName
- # 简介
- self.brief = brief
- # 利润,销售额,总成本,雇员姓名列表,雇员详细信息列表
- self.profit = profit
- self.sale_ = sale_
- self.cost = cost
- self.name_list = name_list
- # self.name_detail = name_detail
- # 每实例化一个对象,公司数+1
- Company.companyNum += 1
- # 每实例化一个对象,公司实例的名称列表追加一个公司名
- Company.companyList.append(self.companyName)
- def recruit(self, name, age, cost=10000):
- '''
- 招聘人才
- 每招一个人会有成本产生,影响该实例雇员列表、人数、总成本,默认成本cost=10000
- '''
- self.name_list.append(name)
- self.cost += cost
- # self.name_detail.append(age)
- def dismiss(self, name, cost=5000):
- '''
- 解雇人员
- 每解雇一个人会有成本产生,影响该实例雇员列表、人数 、总成本,默认成本cost=5000
- '''
- self.name_list.remove(name)
- self.cost -= cost
- def adPromotion(self, cost):
- '''
- 公司广告推广
- 影响该实例总成本,自定义成本cost
- '''
- self.cost += cost
- def payInsurance(self):
- '''
- 交社保
- 按公司雇员总人数计算,影响该实例总成本,默认单人社保缴纳1000
- '''
- self.cost -= 1000 * len(self.name_list)
- def payTax(self):
- '''
- 交税
- 按公司雇员总人数计算,影响该实例总成本,默认单人税费缴纳500
- '''
- self.cost -= 500 * len(self.name_list)
- def sale(self, num, price):
- '''
- 销售
- 按销售件数*价格计算销售额,利润按销售额*利润率进行计算利润。默认利润率50%
- '''
- # 销售额
- self.sale_ = num * price
- # 利润
- self.profit += self.sale_ * 0.5
- def getEmployeeList(self):
- '''
- 获取公司雇员列表
- '''
- return self.name_list
- def getProfit(self):
- '''
- 获取公司净利润
- '''
- # 利润 = 收入 - 支出
- # 收入
- return self.profit - self.cost
- # 类方法
- # 返回公司类共有多少个公司实例
- # 返回公司类的公司实例有名称列表
- @classmethod
- def Company_num(cls):
- return len(cls.name_list)
- @classmethod
- def Company_list(cls):
- return cls.name_list
- #功能验证
- c0 = Company('网易','高科技互联网公司')
- c0.recruit('张三',18, cost=20000)
- c0.recruit('王五',20, cost=10000)
- print('{}公司员工详细信息列表:{}'.format(c0.companyName, c0.getEmployeeList()))
- c0.dismiss('王五')
- c0.adPromotion(5000)
- c0.payInsurance()
- c0.payTax()
- c0.sale(50,100)
- print('{}公司员工详细信息列表:{}'.format(c0.companyName, c0.getEmployeeList()))
- print('{}公司当前利润:{}'.format(c0.companyName, c0.getProfit()))
- c1 = Company('百度','搜索引擎')
- c1.recruit('李四',30, cost=50000)
- c1.recruit('赵六',50, cost=40000)
- print('{}公司员工详细信息列表:{}'.format(c1.companyName, c1.getEmployeeList()))
- print('公司名列表:',Company.companyList)
- print('公司总个数:',Company.companyNum)
- 网易公司员工详细信息列表:['张三', '王五']
- 网易公司员工详细信息列表:['张三']
- 网易公司当前利润:-26000.0
- 百度公司员工详细信息列表:['张三', '李四', '赵六']
- 公司名列表: ['网易', '百度']
- 公司总个数: 2
10、结合PIL库,制作一个能生成5位随机数验证码图片的函数
生成5位随机数验证码并存储为verify.png名称的图片。
提示:PIL库的使用方法可以参考python中PIL库的使用和PIL库简易教程与验证码生成
- %matplotlib inline
- from PIL import Image
- from PIL import ImageDraw
- from PIL import ImageFont
- from PIL import ImageFilter
- import random
- # 完成题目指定的任务
- # your code here
- # 随机ASCII码生成数字
- def rndChar():
- return chr(random.randint(48, 57)) # 0-9的ASCII码是48-57
- # 随机颜色1:
- def rndColor():
- return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
- # 随机颜色2:
- def rndColor2():
- return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
- # 300 x 60:
- num = 5 # 生成num位的验证码
- width = 60 * num # 图宽
- height = 60
- image = Image.new('RGB', (width, height), (255, 255, 255))
- # 创建Font对象:
- font = ImageFont.truetype('Arial.ttf', 36)
- # 创建Draw对象:
- draw = ImageDraw.Draw(image)
- # 填充每个像素:
- for x in range(width):
- for y in range(height):
- draw.point((x, y), fill=rndColor())
- # 输出文字:
- for t in range(num):
- draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
- # 模糊:
- image = image.filter(ImageFilter.BLUR)
- image.save("verify.png", "jpeg")
python面试_总结02_代码题的更多相关文章
- python面试_总结03_列表练习题
1.列表练习题 完成下列列表相关的编程题,先运行下列的test函数,在完成每道题之后,都可以通过调用test函数检测所写函数对错. def test(got, expected): if got == ...
- python面试_总结04_字符串练习题
完成下列列表相关的编程题,先运行下列的test函数,在完成每道题之后,都可以通过调用test函数检测所写函数对错 def test(got, expected): if got == expected ...
- python面试_总结01_概念和内置高阶函数
- 简答题 1.请谈谈Python中is 和 == 的区别(代码演示) is用于比较两个变量是否引用了同一个内存地址,is表示的是对象标识符(object identity),作用是用来检查对象的标识 ...
- 各位大佬Python的第一部分道基础题已经整理好了,希望大家面试的时候能用的上。
Python的第一部分道基础题,希望大家面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途 ...
- Python面试真题答案或案例
Python面试真题答案或案例如下: 请等待. #coding=utf-8 #1.一行代码实现1--100之和 print(sum(range(1,101))) #2.如何在一个函数内部修改全局变量 ...
- Python面试315题
感谢老男孩的武沛齐老师辛苦整理和分享,本文是转自他的博客. 第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Python? Python和Java.PHP.C.C# ...
- 2019前端面试系列——JS高频手写代码题
实现 new 方法 /* * 1.创建一个空对象 * 2.链接到原型 * 3.绑定this值 * 4.返回新对象 */ // 第一种实现 function createNew() { let obj ...
- python 面试真题
0.Python是什么? Python是一种解释型语言.但是跟C和C的衍生语言不同,Python代码在运行之前不需要编译.其他解释型语言还包括PHP和Ruby. Python是动态类型语言,指的是在声 ...
- Python基础篇(三)_函数及代码复用
Python基础篇_函数及代码复用 函数的定义.使用: 函数的定义:通过保留字def实现. 定义形式:def <函数名>(<参数列表>): <函数体> return ...
随机推荐
- 安卓开发常见Bug-项目未升级到Androidx
当项目未升级到androidx时,会出现某些项目文件资源不匹配的问题,建议在建立项目后就将项目升级到androidx 点击升级到androidx Migrate迁移然后点击左下角Dorefactor
- Stream流的基本介绍以及在工作中的常用操作(去重、排序以及数学运算等)
平时工作中,我在处理集合的时候,总是会用到各种流操作,但是往往在处理一些较为复杂的集合时,还是会出现无法灵活运用api的场景,这篇文章的目的,主要是为介绍一些工作中使用流时的常用操作,例如去重.排序和 ...
- 一 简单介绍aws。
aws入门 一 什么是aws? /* 概念: AWS就是 Amazon Web Servies, 亚马逊云计算服务平台. 是一款云服务. */ 二 aws可以做什么? // 可以在aws,创建我们需要 ...
- HTML 代码复用
前言 通常我们所做的一些页面,我们可以从设计图里面看出有一些地方是相同的.例如:头部,底部,侧边栏等等.如果是制作静态页面的同学,对于这些重复的部分只能够通过复制粘贴到新的页面来,如果页面的数量上去了 ...
- 使用CAShapeLayer做出圆形的进度条 —— #DF!
CircleView.h的内容如下: #import <UIKit/UIKit.h> @interface CircleView : UIView @property (nonatomic ...
- Java-基于JDK的动态代理
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11686615.html 简单的记录一下Java中自带动态代理的用法. 准备材料: 1.一个接口 ...
- IDEA的使用和快捷键
一.字体设置: 菜单:file->setting->Appearan 编辑区字体大小:file->setting->Font 字体加粗:file->setting-> ...
- fiddler模拟2
在解决日常的支持需求中,经常会遇到一些用户反馈一些无法简单复现的bug,有很大一部分的bug是由于用户自身的网络环境波动,或者是本身网络环境就较为恶劣,而服务在面对这种恶劣的网络环境的健壮性不够,导致 ...
- Docker prefereces
https://docs.docker.com/docker-for-mac/#preferences-menu docker 的镜像命令需要抽时间了解
- 无xml文件的springMVC
使用springMVC我们一般都会在web.xml中配置一个dispatcher,现在我们基于用java代码的方式来使用springMVC import org.springframework.con ...