1112day10:考前复习50题:断言

文章目录

1 如何在Python中管理内存?

(1)引用计数
(2)分代回收
(3)标记清除

2 什么是python模块?Python中有哪些常用的内置模块?

在Python程序中,每个.py文件都可以视为一个模块,
通过在当前.py文件中导入其它.py文件,可以使用被导入文件中定义的内容,例如类、变量、函数等
time
random
sys
json
re
os
datetime

3 Python中的== 局部变量和全局变量 ==是什么?

局部变量:作用于一定范围的变量
定义在函数内部的变量称为局部变量(函数的形参也是局部变量),
局部变量只能在函数内部使用,只有在函数调用时才能够被创建,在函数调用之后会动销毁。
全局变量:所有地方都能用到的变量
定义在函数外部,模块内部的变量称为全局变量,所有的函数都可以直接访问全局变量(但函数内部不能将其直接赋值

4 什么是Python中的类型转换?

对象从一种数据类型到另一种数据类型的转换

5 什么是__init__?

类的构造函数
一、类实例化时触发
二、自建包的时候用到,告诉这个文件夹是包

6 什么是lambda函数?

匿名函数

7 Python中的self是什么?

== 对象 ==

8 区分break,continue和pass?

一、== break 语句负责终止使用它的循环。跳出当前循环
二、当
continue ==语句在循环结构中执行时,并不会退出循环结构,跳出当次循环,而是立即结束本次循环,重新开始下一轮循环,也就是说,跳过循环体中在continue语句之后的所有语句,继续下一轮循环。
三、Python == pass ==语句在循环、函数、类和if语句中用作占位符,不做任何事情,是一个空操作。

9 [:: - 1}表示什么?

倒序

10 如何在Python中随机化列表中的元素?

shuffle()

11 什么是python迭代器?

迭代器:能被next函数不断调用,并不断返回下一个值。list、set、dicts通过iter()转换的

12 python中的生成器是什么?

生成器:是一种特殊的迭代器,只有列表生成式和函数yield返回生成的才是生成器

13 什么是可迭代对象?

可迭代对象:所有能被for循环遍历的。如:range(100),{1,2,3,4}

14 为什么使用* args,** kwargs?

*args,**kwargs这两个基本可以代替所有参数,
有时候不确定函数要几个参数,也不确定参数的格式

15 如何将值添加到python列表?

append()

  • 会创建新的内存空间
    extend()
    insert()

16 如何删除python列表的值?

pop()
remove ()
del ()
clear()

17 深拷贝和浅拷贝有什么区别?

首先深拷贝和浅拷贝都是对原对象的拷贝,都会生成一个看起来相同的对象,本质区别就是拷贝出来的对象的「地址」是否与原对象一样,即就是对原对象的地址的拷贝,还是值的拷贝

== 深拷贝 :对原对象的地址的拷贝,新拷贝了一份与原对象不同的地址的对象,修改对象中的任何值,都不会改变深拷贝的对象的值。
== 浅拷贝 :对原对象的值的拷贝,地址仍是一个指针指向原对象的地址,浅拷贝或者原对象的值发生变化,那原对象和浅拷贝对象的值都会随着被改变。
== 浅拷贝(影子克隆)
:只复制对象的基本类型,对象类型,仍属于原来的引用
== 深拷贝(深度克隆)
:不仅复制对象的基本类,同时也复制原对象的对象,完全是新对象产生的
1.copy.copy 浅拷贝——只拷贝对象,不会拷贝对象的引用对象,不会拷贝原始对象的内部的
2.copy.deepcopy 深拷贝——拷贝对象的值类型,还拷贝了原始对象,而产生了一个新的对象,不仅仅只拷贝了原始对象的引用

import copy
from copy import deepcopy,copy

l = [1,2,3,[4,5,6]]

l1 = copy(l)
l2 = deepcopy(l)   #深拷贝一点影响都没有
# print(l1,l2)
l[-1].append(123)
l.append(456)
print(l,l1,l2)

结果:[1, 2, 3, [4, 5, 6, 123], 456] [1, 2, 3, [4, 5, 6, 123]] [1, 2, 3, [4, 5, 6]]

18 如何在Python中实现多线程?

Python中的多线程可以通过导入threading模块来实现。

19 一行代码实现1–100之和

方法一
print(sum(range(1,101)))

方法二
from functools import reduce
print(reduce(lambda x,y:x+y,range(101)))
结果:5050

20 字典如何删除键和合并两个字典

pop ()
update ()

21 列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数

方法一
def get_data(x):
    return x**2
    
lists = [1,2,3,4,5]
print(list(map(get_data,lists)))

结果:[1, 4, 9, 16, 25]

方法二
lists = [y for y in map(lambda x:x**2,[1,2,3,4,5])if y >10]
print(lists)
结果:[16, 25]

方法三
def square(x):
	return x**2
res = map(square,[1,2,3,4,5])
res = [i for i in res if i > 10]
print(res)

22 python中生成随机整数、随机小数、0–1之间小数方法

random.randint(1,10)     
random.random() 
random.random()

23 用正则匹配出标签里面的内容(“中国”),其中class的类名是不确定的

方法一
import re
source = '<div class="nam">中国</div>'
demo = re.compile('<div class="\w+">(\w+)</div>')
result = demo.findall(source)
print(result)

结果:['中国']

方法二
import re
str = '<div class="nam">中国</div>'
result = re.findall(r'<div class=".*">(.*?)</div>',str)
print(result)

结果:['中国']

方法三
re.complie是将正则表达式编译成一个对象,加快速度并重复使用
import re
title = "你好,hello,世界!"
res = re.compile(r'[\u4e00-\u9fa5]+')
result = res.findall(title)
print(result)

结果:['你好', '世界']

24 python中断言方法举例

使用assert断言
assert 3>4raise ValueError差不多

if 3<4:
    raise ValueError('你错了')
a = 2
assert (a>1)
print('断言成功,程序继续向下执行')

b = 2
assert (b>3)
print('断言失败,程序报错')   #AssertionError

python的assert是用来检查一个条件,如果他为真,就不做任何事
如果他为假,则会抛出AssertionError并且包含错误信息

25 列出python中可变数据类型和不可变数据类型,并简述原理

dict list set   int float bool tuple  str

26 s = “ajldjlajfdljfddd”,去重并从小到大排序输出"adfjl"

s = "ajldjlajfdljfddd"
print(''.join(sorted(set(s))))

结果:adfjl

27 字典根据键从小到大排序

dic={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}

result = dict(sorted(dic.items(),key=lambda x:x[0]))  #x:x[0]传进来取前面的值
print(result)

结果:{'age': 18, 'city': '深圳', 'name': 'zs', 'tel': '1362626627'}

28 字符串a = “not 404 found 张三 99 深圳”,每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三 深圳"

方法一
import re
a = "not 404 found 张三 99 深圳"
result = re.sub('[a-zA-Z0-9]','',a)  #把数字大小写字母全部替换成空的,替换对象是a
print(result.strip())

结果:张三  深圳


方法二
import re
a='not 404 found 张三 99 深圳'
li = a.split(' ')
print(li)  #结果:['not', '404', 'found', '张三', '99', '深圳']
res = re.findall('\d+|[a-zA-Z]+',a) #\d匹配数字,|[]中匹配单词,+连接多个匹配方式
for i in res:
    if i in li:
        li.remove(i)

new_str = ' '.join(li)
print(res)   #结果:['not', '404', 'found', '99']
print(new_str)   #结果:张三 深圳

29 filter方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

方法一
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
l = [y for y in filter(lambda x:x%2==1,a)]
print(l)

结果:[1, 3, 5, 7, 9]

方法二
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def fun(a):
    return a%2==1
list1 = filter(fun,a)
list2 = list(list1) #等价于list2=[i for i in list2]
print(list2)

结果:[1, 3, 5, 7, 9]

30 两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]

方法一
l1 = [1,5,7,9]
l2 = [2,2,6,8]

print(sorted(l1+l2))
结果:[1, 2, 2, 5, 6, 7, 8, 9]

方法二
l1 = [1,5,7,9]
l2 = [2,2,6,8]
l1.extend(l2)     #合并添加
print(l1)  #结果:[1, 5, 7, 9, 2, 2, 6, 8]
l1.sort() #排序
print(l1)  #结果:[1, 2, 2, 5, 6, 7, 8, 9]


方法三
for a,b in zip(l1,l2):
    print(a,b)
结果:
1 2
5 2
7 6
9 8

31 举例说明异常模块中try except else finally的相关意义

try:
	print(aaa)
except:
	print(123)
else:
	print(456)
finally:  #不管是否执行成功都要打印
    print("over")

结果:
123
over
如果try执行不成功,那么顺序就是except finally
如果try执行成功,那么顺序就是try else finally

32 举例说明zip()函数用法

my_list = [11,12,13]
my_tuple = (21,22,23)
print([x for x in zip(my_list,my_tuple)])  #打包

结果:[(11, 21), (12, 22), (13, 23)]

33 写5条常用sql语句

select * from table
insert into table(字段) values("值")
update table set 字段='值'
delete from table
select * from table where id in (select id from table)

34 list=[2,3,5,4,9,6],从小到大排序,不许用sort,输出[2,3,4,5,6]

方法一
l12=[2,3,5,4,9,6]
l121=[]
for i in range(0,100):
    if i in l12:
        l121.append(i)
print(l121)


lists = [4,2,8,7,9,3,6,5]

方法二:冒泡排序
for j in range(len(lists)-1):
    flag = 0
    for i in range(len(lists)-1-j):
            if lists[i]>lists[i+1]:
                lists[i],lists[i+1] = lists[i+1],lists[i]
                flag = 1
    if flag==0:
        break
print(lists)

结果:[2, 3, 4, 5, 6, 7, 8, 9]

35 请将[i for i in range(3)]改成生成器

a = (i for i in range(3))
print(type(a))

36 举例sort和sorted对列表排序,list=[0,-1,3,-10,5,9]

list=[0,-1,3,-10,5,9]
a = sorted(list)   #创建新的
print(a)

list=[0,-1,3,-10,5,9]
list.sort()       #作用于原来的
print(list)

37 对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使用lambda函数从小到大排序

foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4]
h= lambda x :sorted(x)
print(h(foo))
结果:[-20, -5, -4, -4, -2, 0, 2, 4, 8, 8, 9]

38 列表嵌套字典的排序,分别根据年龄和姓名排序

39 递归求和 1到100的数和

def get_data(n):
    if n==1:
        return 1
    else:
        return n+get_data(n-1) #100、99、98....1

print(get_data(100))

结果:5050

40 python字典和json字符串相互转化方法

import json
dict = {'hello':123}
jsons = json.dumps(dict)   #字典转json字符串
print(jsons)
print(json.loads(jsons))  #转回

结果:
{"hello": 123}
{'hello': 123}

41 统计字符串中某字符出现次数

count()方法
str = "李白  45 李白 hello world 杜甫"
res = str.count("李白")
print(res)  #结果:2

42 str=’ hello world '用两种方法去空格

方法一
str.replace(' ','')

方法二
import re
result = re.sub('\s','',str)

方法三
print(''.join(str.split(' ')))

43 a+文件打开模式直接读取为什么读取不到东西

seek()

44 常见的网络传输协议

http
https

45 什么是md5,sha,作用是什么

我们最常用的是sha1加密,md5和sha1都是不可逆的
== md5 ==去重,根据字节去重

46 python 操作mysql数据应该使用什么模块?

pymysql mysqlclient

47 python 操作 redis数据库应该使用什么模块?

48 利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法

strs = 'tashiyigedashiren,tajiushiliuzongyuantt'
def hello(strs,h='all',s=' '):
    while h=='l' or h=='all':  #左边或者全部
        if strs[0]==s:
             strs = strs[1:]
        else:
            break

    while h=='r' or h=='all': #右边或者全部
        if strs[-1]==s:
            strs=strs[:-1]
        else:
            break
    return strs
print(hello(strs,h='r',s='t'))  #去除右边的t

结果:
tashiyigedashiren,tajiushiliuzongyuan

49 利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’, ‘Bart’]

data = ['adam', 'LISA', 'barT']
print(list(map(str.title,data)))

结果:['Adam', 'Lisa', 'Bart']

50.is和==的区别?

is 是检查两个对象是否指向同一块内存空间,而 == 是检查他们的值是否相等。
可以看出,is 是比 == 更严格的检查,is 返回True表明这两个对象指向同一块内存,值也一定相同。

51.两种方法去字符串空格

方法一
str = "hello world, 世界"
res = str.replace(" ","")
print(res)  #结果:helloworld,世界

方法二
list = str.split(" ")
res = "".join(list)
print(res)  #结果:helloworld,世界

52.正则匹配不是以4和7结尾的手机号

#电话号码是虚拟的
import re

tels = ["13100001234","18912344321","10076","18800007777"]

for tel in tels:
    ret = re.match("1\d{9}[0-3,5-6,8-9]",tel)
    if ret:
        print("想要不是以4和7结尾的手机号是:",ret.group())
    else:
        print("%s:不是想要的手机号" % tel)

# 结果:
13100001234:不是想要的手机号
想要不是以47结尾的手机号是: 18912344321
10076:不是想要的手机号
18800007777:不是想要的手机号

53.正则表达式匹配第一个URL

findall结果无需加group(),search()需要加group()提取

import re

s = '<imng data-original="https://rpic.douyucdn.cn/appCovers/2016/11/13/124871_23424435_small.jpg"'\
    'src="https://rpic.douyucdn.cn/appCovers/2016/11/13/124871_23424435_small.jpg" style="display: incline;">'
#re.findall在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
#注意: match和search是匹配一次,findall匹配所有。
res = re.findall(r"https://.*?.jpg",s)[0]
print(res)

结果:
https://rpic.douyucdn.cn/appCovers/2016/11/13/124871_23424435_small.jpg

#re.search扫描整个字符串并返回第一个成功的匹配。匹配成功re.search方法返回一个匹配的对象,否则返回None。
res = re.search(r"https://.*?.jpg",s)
print(res.group())

结果:
https://rpic.douyucdn.cn/appCovers/2016/11/13/124871_23424435_small.jpg

54.正则表达式匹配出

==

www.itcast.cn

==

import re

labels = ["<html><h1>python编程:887934385</h1></html>","<html><h1>python编程:789534385</h1></html>"]

for label in labels:
    ret = re.match(r"<(\w*)><(\w*)>.*?</\2></\1>",label)
    if ret:
        print("%s 是符合要求的标签"%ret.group())
    else:
        print("%s 不符合要求的标签" % label)

结果:
<html><h1>python编程:887934385</h1></html> 是符合要求的标签
<html><h1>python编程:789534385</h1></html> 是符合要求的标签
import re
labels = '"<html><h1>python编程:887934385</h1></html>","<html><h1>python编程:789534385</h1></html>"'
ret = re.findall(r"<(\w*)><(\w*)>(.*?)</\2></\1>",labels)
print("%s 是符合要求的标签"% ret)

结果:[('html', 'h1', 'python编程:887934385'), ('html', 'h1', 'python编程:789534385')] 是符合要求的标签
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ゆきな

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值