运行环境为JupyterNotebook
- 不使用中间变量,交换a,b的值
a = 1
b =2
a,b = b,a
- 读程序,写结果
l1 = []
for i in range(3):
l1.append({'name':i})
print(l1)
l2 =[]
a = {'name':0}#可变类型不重新创建对象
for i in range(3):
a['name'] = i
l2.append(a)
print(l2)
[{'name': 0}, {'name': 1}, {'name': 2}]
[{'name': 2}, {'name': 2}, {'name': 2}]
3.求两个集合的交并差集
set1 = {2,2,2,True,3+4j}
set2 = {2,1,2,False,3+4j}
print(set2|set1)#(true,1能相互转换)以前一个中元素优先
print(set1|set2)
print(set2&set1)
print(set1&set2)#以后一个优先
print(set2 - set1)#==set2 - set2&set1
print(set1 - set2)
{False, 1, 2, (3+4j)}
{False, True, 2, (3+4j)}
{True, 2, (3+4j)}
{True, 2, (3+4j)}
{False}
set()
- 读程序,写结果
rest1 = 3>4 and 4>3 or 1==3 and x == 'x' or 3 >3
rest1
False
- 对于函数来说,return是什么
- return是一个函数结束的标志,一个函数可以有多个return,但只要执行一次,整个函数就会结束。
- return的返回类型无任何限制,可以是任何类型
- return的返回值个数没有限制,0个返回为None,一个返回本身,多个用逗号隔开,返回元组
- 求薪资最高的人名
salary = {'a':11111,'b':22222,'c':9}
max(salary,key = lambda name :salary[name])
- 写一个函数遍历某文件夹下的所有文件
import os
path = r'D:\Python编程\竞赛1'
def fun(path):
for i in os.listdir(path):
full_path = os.path.join(path,i)
if os.path.isfile(full_path):
print(i)
elif os.path.isdir(full_path):
print('文件夹:',i)
print('****')
fun(full_path)
print('****')
fun(path)
文件夹: asyncore框架
****
client.py
EchoServer.py
httpclient_demo.py
temp.py
__init__.py
****
out.csv
samples.csv
test.csv
train.csv
数据说明.txt
- 写一个登录装饰器,要求输入密码和账号才能运行登录函数
def request_load(fun):
def warppedfun(password,username):
if password == '1234' and username == 'root':
print('登录成功!')
fun()
return 1
else:
print('账号或密码错误')
return warppedfun
@request_load
def run():
print('运行')
run('1234','root')
登录成功!
运行
1
- 文件存在则读取,文件不存在则进行写入
try:
with open(r'./testtest.txt','rt') as f:
a = f.read()
print(a)
except FileNotFoundError as e:
with open(r'./testtest.txt','wt',encoding='utf-8') as f:
while True:
msg = input()
if msg.upper() == 'Q':
break
else:
f.writelines(msg+'\n')
- 使用生成器的方法计算1!+2!+3!···
def func(n):
i = j =1
while i<=n:
yield j #生成器暂停函数,并输出值
i +=1
j *=i
a = func(4)
sum_= 0
for i in a:
sum_ +=i
print(sum_)
33
- 生成指定长度的验证码
#生成指定长度的验证码
import random
def make_code(n):
code =''
for i in range(n):
digt = str(random.randint(0,9))
char = chr(random.randint(65,91))
charlow =chr(random.randint(65,91)).lower()
code += random.choice([digt,char,charlow])
return code
make_code(4)
- 类生成的实例化方法怎样才能调用‘
class Foo:
def __init__(self,name):
self.name = name
def __call__(self,*args,**kwargs):
print(args,self.name)
a = Foo('li')
a(0)
(0,) li
- 写一个类的绑定方式的单例模式
class Foo(object):
__instant = None
def __init__(self,name):
self.name = name
@classmethod
def check(cls):
if cls.__instant == None:
cls.__instant = cls('li')
return cls.__instant
a = Foo.check()
print(a.name)
b = Foo.check()
b.name
li
li
-
基于网络通信,标识世界范围内唯一性软件
IP+mac+port标识
IP找到局域网
Mac找到局域网内的计算机
port找到计算机上的应用 -
守护进程和守护线程的区别
守护进程,随着主进程的结束,进程立刻结束
守护线程,随着主进程的结束,不会立刻结束,会随着最后一个一个线程执行完,才结束 -
MySQL中varchar 和 char的区别
相同点:宽度是能够存储字符的最大宽度,都有额外1byte的包头
不同点:char将字符扩展为定长,varchar则按不进行扩展,按原长扩展,节约内存 -
SQL中的关键字优先级
select distinct ***(column) from ****(table)
where 约束条件
group by 分组条件
having 过滤条件
order by 排序条件
limit 限制条数
-
Python操作MySQL解决sql注入问题
sql = “select ID from user where name = ‘%s’ and password = ‘%s’ %(name,password)”
注入:导致跳过查询条件
1 name’ – 注释
2 xxx’ or 1==1 – 注释
解决方法:
cursor.execute(sql,(name,password))#自动匹配识别占位符,占位符不需要引号 -
视图的定义
本质就是一个虚拟的表,数据来自select语句,临时存储在内存中。保存的是select语句和表的结构,不包含数据,每次使用去原始表中查询。
create view name as select语句
- redis数据库中插入一条hash数据
增
hmset user name dh age 19
删
hdel user age
该
hset user age 18
查
hgetall user
- 操作MongoDB,添加一条数据
import pymongo
#建立链接
client = pymongo.MongoClinet('127.0.0.1',27017)
#指定数据库
db = client['base']
# 指定集合
collection = db['student']
# 增
collection.insert_one({'name':'li','age':19})
# 删
collecton.delete_one({'name':'li'})
# 改
collection.update_one({'name':'li'},{'&set':{'age':18}})
# 查
data = collection.find()
for i in data:
print(i)
- 字符串压缩算法
test = 'aaaabbbbdddwwwqqqaa'
set_ = sorted(set(test))
a = ''
for i in set_:
a += i+str(test.count(i))
a
'a6b4d3q3w3'
- 一行代码通过filter和lambda输出奇数下标的元素
a = [1,2,3,4,5,6,7,99,333]
print(list(filter(lambda x: x,[a[i] for i in range(1,len(a),2)])))
[i[1] for i in filter(lambda x: x[0] %2 ==1,[(i,a[i]) for i in range(0,len(a))])]
[2, 4, 6, 99]
[2, 4, 6, 99]
- 字符串格式化方法
a,b, c = 1,2,3
print('a=%d,b=%d,c=%d '%(a,b,c))
print('a={},b={},c={}'.format(a,b,c))
#只限于version3.6及以上
print(f'a={a},b={b},c={c} ')
a=1,b=2,c=3
a=1,b=2,c=3
a=1,b=2,c=3
慢慢补充