# 1、一行代码实现1--100之和
print(sum(range(1,101)))
#2、如何在一个函数内部修改全局变量
def fn():
global a
a = 100
return a
a = 5
print(fn())
# 3、列出5个python标准库
# math, os, random, collections, datetime, sys, re, unittest, turtle,glob, zlib
# 4、字典如何删除键和合并两个字典
dic1 = {"uzi": 666, '55open': 777, 'faker': 6666}
dic2 = {'dupree': 888, 'edw': 999}
del dic1["uzi"] #删除
print(dic1)
dic1.update(dic2) #合并
print(dic1)
# 5,谈下python的GIL
# 即全局解释器所(global interpreter lock),每个线程在执行时候都需要先获取GIL,
# 保证同一时刻只有一个线程可以执行代码,即同一时刻只有一个线程使用CPU,也就是说多线程并不是真正意义上的同时执行。
#本质上就是全局排它锁
# 5.1如何解决GIL
# 使用多进程完成多线程的任务
# 在使用多线程可以使用c语言去实现
# 6、python实现列表去重的方法
lis1 = ['123', '123', 'aa', 'james', 'JB', 'GD']
lis1 = list(set(lis1))
print(lis1)
# 7、fun(*args,**kwargs)中的*args,**kwargs什么意思?
# 表示可以传入不定数目的参数 *args 代表非键值对容器比如列表等 **kwargs表示可传入字典
# 8、python2和python3的的区别
# 比较多,每个方面挑点说
#性能:py2 比py3强 py3正在改进
#编码:py3用utf8编码 py可以支持中文变量名 py2不行
# 语法:py2用<>表示不等于py3用!= \ py3加入了nolocal \ py2用print py3用print()\ py3 的super()不用传self
#面向对象 py3引入抽象类
# 其他 py3用open(path)打开文件不再用file(path)了
# 9、一句话解释什么样的语言能够用装饰器?
# 函数可以作为参数传递的语言,可以使用装饰器
# 10、python内建数据类型有哪些
# 不可变:int, str, bytes,tuple
# 可变: list, set, dict
#11,, 简述面向对象中__new__和__init__区别
# __new__ 有cls参数 表示当前类, 实例化对象时自动识别 返回实例化出来的对象
#__init__有self参数 表示当前实例,不需要返回值
#如果__new__创建当前类的实例,会自动调用__init__
# 12简述with方法打开处理文件帮我我们做了什么?
# 用了with 打开文件就不用自己手动关闭文件了
# 13列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]
lis13 = [1,2,3,4,5]
lis13t = [ i for i in map(lambda x: x **2, lis13) if i > 10]
print(lis13t)
# 14、python中生成随机整数、随机小数、0--1之间小数方法
import random
import numpy as np
print(random.randint(1,10))
print(np.random.randn(1))
print(random.random())
# 15 避免转义给字符串加哪个字母表示原始字符串?
# 加r
import os
try:
f = open(r"age.py", "r")
print(f.read())
finally:
if f:
f.close()
# 16、<div class="nam">中国</div>,用正则匹配出标签里面的内容(“中国”),其中class的类名是不确定的
import re
str1 = '<div class="nam">中国</div><div class="nam">123123</div>'
# pail = re.compile(r'<div class=".*">(.*?)</div>')
# res = pail.findall(str1)
res = re.findall(r'<div class=".*">(.*?)</div>',str1) #此处有bug只能查到123123不能查到中国,没有解决
print(res)
# 17、python中断言方法举例
# assert()
impact = 7
assert(impact > 4)
print("success")
# assert(impact > 9)
# print("fail")
# 18、数据表student有id,name,score,city字段,其中name中的名字可有重复,需要消除重复行,请写sql语句
# select distinct name from student
# 19、10个Linux常用命令
# ls mkdir clear rmdir rm cd mv cp chmod useradd ping vim touch ...
# 20、python2和python3区别?列举5个
#见8题
# 21、列出python中可变数据类型和不可变数据类型,并简述原理
# 不可变数据类型:数值型、字符串型string和元组tuple
# 不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,内存中只有一个地址
# 可变数据类型:列表list和字典dict;
#进行append,pop等操作对象的地址不会发生变化 ,这里可变与不可变是针对内存地址讲的
# 22、s = "ajldjlajfdljfddd",去重并从小到大排序输出"adfjl"
s = "ajldjlajfdljfddd"
s = set(s)
s = list(s)
s.sort()
res = "".join(s)
print(res)
#23 用lambda函数实现两个数相乘
mul = lambda x, y: x * y
print(mul(4,5))
# 24、字典根据键从小到大排序dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}
dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}
dict1 = sorted(dict.items(), key=lambda d: d[0])
print(dict1)
new_dict = {}
for i in dict1:
new_dict[i[0]] = i[1]
print(new_dict)
# 25、利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
from collections import Counter
str = "kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
res = Counter(str)
print(res)
# 26、字符串a = "not 404 found 张三 99 深圳",每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三 深圳"
pile = re.compile(r'\d+|[a-zA-Z]+')
a = "not 444 found 张三 99 深圳"
lista = a.split(" ")
listb = a.split(" ")
for i in lista:
if pile.findall(i):
listb.remove(i)
print(listb)
# 27、filter方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = list(filter(lambda x: x % 2 == 1, a))
print(a)
#28, 列表推导式求列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [i for i in a if i % 2 == 1]
print(a)
# 29、正则re.complie作用
# 创建正则模块对象,可重复使用该对象调用re函数match,search, filter
# 30、a=(1,)b=(1),c=("1") 分别是什么类型的数据?
# tupple ,int , str
# 31、两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]
list1 = [1,5,7,9]
list2 = [2,2,6,8]
list3 = list1 + list2
list3.sort()
print(list3)
# 32、用python删除文件和用linux命令删除文件方法
# python:
# os.remove("111.py") //这里可以加个 try: execpt:
#linux:
# rm -rvf
# 33、log日志中,我们需要用时间戳记录error,warning等的发生时间,请用datetime模块打印当前时间戳 “2018-04-01 11:38:54”
import datetime
print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# 数据库优化查询方法
# 建立索引(重点),但不要建立太多索引
# 建表时最好有主键与外键
# 使用join代替子查询
#查询时尽量少用in 可用exists代替
#不要使用select * 要把查询的列都列出来(习惯)
#查询时尽量不要一次性返回大量数据
# 35、请列出你会的任意一种统计图(条形图、折线图等)绘制的开源库,第三方也行
# Python主要作图库是Matplotlib,Pandas基于Matplotlib并对某一些命令进行了简化,因此在作图上,通常是这两者相互结合着使用
# 36写一段自定义异常代码
class MyExecption(Exception):
def __init__(self,msg = "出现错误,错误类型为404"):
super().__init__(msg)
def testMyExecption():
raise MyExecption()
try:
testMyExecption()
except MyExecption as Argument:
print(Argument)
# 37、正则表达式匹配中,(.*)和(.*?)匹配区别?
# .*表示贪婪匹配,即尽可能多的匹配串
# .*?表示惰性匹配,即最小匹配
# 38、简述Django的orm
# 39、[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]
list123 = [[1,2],[3,4],[5,6]]
# list2 = list(map(lambda x: x[0], list1)) + list(map(lambda x: x[1], list1)) #不好
print(sum(list123,[])) #慢
import itertools
print(list(itertool