Python Flashcards Preview

CTF > Python > Flashcards

Flashcards in Python Deck (98):
1

【z3】

a = -6
32位的hex怎么表示

from z3 import *
a = BitVecVal(-6,32)
print(a.sexpr())

2

【Python基础】

写出异常模板

try:
#主代码块
pass
except KeyError as e:
#异常时执行该块
pass
except Exception as e:
pass
else:
#如果没有任何异常,执行到这
pass
finally:
#无论异常与否,最终执行该块
pass

3

【z3】

print eq(x+y,y+x)返回什么

False
因为AST node的哈希值不同
(表达式,种类,声明被称为AST)

4

【Python基础】

定义一个类的格式是什么

class 类名:
def 方法1(self,参数):
pass
def 方法2(self,参数):
pass

self:形式参数,python内部自动传递
obj = 类名()
当执行obj.func1()时,self就是obj

5

【Python基础】

class Animal:
def __init__(self):
print('A'的构造方法)
self.tp = '动物'

class Cat(Animal):
def __init__(self):
print('B的构造方法')
self.name = '猫'

问:猫怎样才能继承Animal的__init__以便可以访问tp
额外继承基类的init方法的公式是什么

class Animal:
def __init__(self):
print('A'的构造方法)
self.tp = '动物'

class Cat(Animal):
def __init__(self):
print('B的构造方法')
self.name = '猫'
super(Cat,self).__init__()

公式:
super(自身类名,self).__init__()

6

【正则表达式】

\s代表什么

\s代表空白字符
[\t\r\n\f\v]

7

【z3】
Ben在等红绿灯,当灯变绿时,Ben从0开始以6m/(s**2)加速4.1秒,求这段时间的汽车位移。

提示公式:
距离 = 初速*时间+(加速度*时间**2)/2
末速 = 初速+加速度*时间

from z3 import *
s = Solver()
d,a,t,v_i,v_f = Reals('d a t v_i v_f‘)
equations = [d == v_i*t+(a*t**2)/2 , v_f == v_i+a*t]
known = [v_i == 0 , t == 4.1 , a == 6]
s.add(equations+known)
set_option(rational_to_decimal)
s.check()
s.model()[d]

8

【正则表达式】

[a-z]表示什么

[a-z]表示a到z中任意一个字母

9

【正则表达式】

$表示什么

匹配以xx结尾的
re.findall('hijack$',’sldkjfshijacksdkjfh")返回[ ]
re.findall('hijack$',’sldkjfshijack")返回['hijack']

10

【Python基础】

如果我想要用户输入的字符为不可见要怎么做

import getpass
username = imput('your name:').strip()
password = getpass.getpass('your password':)

会造成好像没有输入的幻觉

11

【Python基础】

range(1,6)包括6吗?
random.randint(1,6)包括6吗?

rane(1,6)不包括6
只有random.randint()包括结束本身
其他都不包括结束本身

12

【正则表达式】

\w代表什么?

\w代表单词字符
[a-zA-Z0-9_]

13

【正则表达式】

re.findall(r'abc\b','abcskdjabcfh')中的r是什么意思,为什么要加r

r的意思是raw_string原生字符串,正则中建议用raw

python有自己的关于\的规则,如\n,\t,\r
正则有自己的关于\的规则,如\w,\d

r使引号内的\失去python的\规则,保留正则的\规则

14

【Python基础】

a = [1,2]
b = [3,4]
a+b 是多少

[1,2,3,4]

15

【z3】

a = BitVec('a',32)
经过一些solve得出的结果:m[a] = 842216501
想要把向量转换为python的整数型怎么做?

思路:位向量转换为16进制,再转换为十进制

m[a].sexpr()返回:"#x32333435",
int(m[a].sexpr().replace('#','0'),16)

16

【Python基础】

a = [1,2,3]
print(a*8)
显示什么

[1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3]

17

【Python基础】

ditc = {'a':'x','b':'y','c':'z'}怎样清空字典

dict.clear()

18

【Python基础】

member = ['a' , 8 , 3.14 , 'b' , [1,2,3]]
删除元素'b'的三种方法

member.pop(3)
member.remove['b']
del member[3]
pop如果没有参数,就是弹出最后1个元素

19

【Python基础】

dict{}
dict.fromkeys((1,2,3))得到什么?
dict.fromkeys((1,2,3),'num')得到什么?

{1:none , 2:none , 3:none}
{1:'num' , 2:'num' , 3:'num'}

dict本身不变,仍然是()

fromkeys()函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值

20

【z3】

我想自定义一个数据类型Role,里面有goodman,badman,normalman

from z3 import *

Role,(goodman,badman,normalman) = EnumSort('Role',('goodman','badman','normalman'))

a = Const('a',Role)
solve (a ! = goodman , a !=badman)

21

【z3】

我想建立一个z3py的整数型数组,所有的元素都是1

a,i = Ints('a i')

AllOne = K(IntSort(),1)
solve(a == AllOne[i])

K(s,v)返回一个将s的任意值映射到v的数组

22

【z3】

请定义列表(5个元素)
整数型列表X
实数型列表Y
布尔型列表Z

from z3 import *

X = IntVector('x',5)
Y = RealVector('y',5)
Z = BoolVector('z',5')

23

【正则表达式】

[\d]表示什么

[\d]表示任意一个数字

24

【正则表达式】

\W表示什么?

\W表示非单词字符

25

【Python基础】

dict = {'k1':'v1' , 'k3':'v3'}
b = {'k2','v2'}
说出dict.update(b)的作用

dict变为{'k1':'v1' , 'k2':'v2' , 'k3':'v3'}

更新update():有key覆盖,无key添加

所以如果再来一次:
c = {'k1':'hello'}
dict.update(c)
则dict变为{'k1':'hello' , 'k2':'v2' , 'k3':'v3'}

26

【z3】

怎样设置结果保留小数点后2位
怎样设置结果用10进制表示

set_option(precision = 2)

set_option(rational_to_decimal = True)

27

【Python基础】

zip(['a' , 'b'] , ['c','d'])的结果是什么

[('a' , 'c') , ('b' , 'd')]

28

【z3】

Select(a,i)是什么意思

等价于a[i]

29

【Python基础】

a = 6
b = a
如果修改a = 7的话,b = ?

b还是6,因为另外出了个空间装7赋给a

30

【Python基础】

x = ['a','b','c','d']
反转x
这个反转函数是改变本身还是建立副本?

x.reverse()
改变本身

31

【Python基础】

dict = {'k1':'v1' , 'k2':'v2' , 'k3':'v3'}
如何得到dict的键列表
如何得到dict的值列表
如何得到dict的键值对列表

dict.keys() 返回['k3' , 'k2' , 'k1']
dict.values() 返回['v3' , 'v2' , 'v1']
dict.items() 返回[('k3','v3') , ('k2','v2') , ('k1','v1')]

32

【Python基础】

列表num1 = [1,2,3,2,1]怎样去重复

num1 = list(set(num1))

33

【z3】

请定义变量:
x:整数
y:实数
z:布尔型
w:模拟32位寄存器,定义一个32位的位向量

批量定义实数a,b,c
批量定义整数d,e,f
批量定义位向量:g,h

from z3 import *
x = Int('x')
y = Real('y')
z = Bool('z')
w = BitVec('w',32)

a,b,c = Reals('a b c')
d,e,f = Ints('d e f')
g,h = BitVecs('g h',32)

34

【z3】

求解器怎么表示
怎样添加约束
怎样查看求解器的断言表达式列表
怎样查看是否有解
s.push()......s.pop()什么意思
求解器怎样查看x的值

s = Solver()
s.add(各种约束)
s.assertions()
s.check()
求解前一定要check一下,否则无法求解

共享之前的约束表达式,在push()和pop()中间加入自己的表达式及其他命令。

pop()后再删除自己的约束

s.model[x]

35

【Python基础】

dict = {'k1':'v1' , 'k3':'v3'}
请说出dict.set.default()的作用

dict.setdefualt('k2')之后dict变成{'k1':'v1' , 'k2':None , 'k3':'v3'}

dict.setdefault('k4','v4')之后dict变成{'k1':'v1' , 'k2':None , 'k3':'v3' , 'k4':'v4'}

setdefault()不会改变已经存在的键的值,智慧增加不存在的键的值。
所以如果再来一次dict.setdefault('k1','hello'),dict不会改变。

36

【Python基础】

x = ['a','b','c','d']
b的index是多少
(不要回答3,使用函数表示)

x.index('b')
查索引函数x.index('a',2,4)
后两个参数是范围,不包括4本身

37

【z3】

证明:"两个数按位异或结果小于0"与"两个数符号相反"等效

from z3 import *
x = BitVec('x',32)
y = BitVec('y',32)

n1 = x^y <0
n2 = Or(And(x<0,y>0),And(x>0,y<0))
prove(n1 == n2)

38

【正则表达式】

\D代表什么

非数字
[^0-9]

39

【Python基础】

随机选择 语文,数学,英语

import random
x = random.choice(['语文' , '数学' , '英语'])

40

【Python基础】

模块commons.py的内容为:
name = 'hijack'

要求判断模块中有没有name变量

import commons

i = hasattr(commons,'name')

41

【Python基础】

如何使以下两个列表组成一个字典?
key = [1,2]
value = ['a','b']

d = dict([key,value])

42

【Python基础】

封装是什么意思?
封装的使用场景是什么?

类+():
自动执行类中的__init__方法,创建了一个对象。

在__init__方法中执行具体封装的操作,创建并封装的过程叫初始化。

封装的使用场景:
1、当同一类型的方法具有相同参数时
2、把类当作模板,创建多个对象时

43

【正则表达式】

[^a-z]表示什么?

除了a-z以外的任意一个字符

44

【z3】

(x+y)**3
把这个表达式打开来,表示成x*x*x + 3*x*x*y + 3*x*y*y +y*y*y这种形式,要怎样做?

simplify((x+y)**3,som = True)
#som = True表示以单项式形式表示

#mul_to_power = True把a*a*a形式转换为a**3的形式

45

【Python基础】

集合a = {'e' , 'h' , 'l' , 'o'}
如何添加一个元素'w'
如何再去掉这个元素'w'

a.add('w')

a.remove('w')

46

【正则表达式】

{ }表示什么?

表示数量
{3}匹配3次
{3,5}匹配3次或4次或5次

47

【Python基础】

import requests要求用字符串的形式找到requests的get函数,并执行

import requests
f = getattr(requests,'get')
f('http://baidu.com') #函数名加个括号就是执行

48

【Python基础】

我想把当前python主文件同级目录下的lib增加到环境变量里面,以便其他人可以使用,该怎么做

import sys
import os

sys.path.append(os.path.join(os.path.dirname(__file__),'lib'))

49

【z3】

Store(a,i,v)是什么意思?

返回一个数组副本,只是i的位置有了数值v
并不改变原有的数组a

50

【z3】

怎样证明两个断言表达式等价?
n = 断言表达式1
m = 断言表达式2

prove(m == n)
成功则proved
失败则会列出一个返例

51

【z3】

请定义z3常量:
b = -1(按照16位位响亮定义)

from z3 import *
b = BitVecVal(-1,16)

52

【Python基础】

模块s2.py内容为:
class Foo:
def __init__(self,name):
self.name = name
def show(self):
print('show')
如何通过字符串创建Foo的实例

m = __import__('s2',fromlist = True)
class_name = getattr(m,'Foo')
obj = class_name('hijack')
#类名加括号得到对象
val = getattr(obj,'name') #返回hijack

53

【z3】

Implies(p,C)是什么意思

如果p成立,则C成立

54

【正则表达式】

+表示什么

表示数量
1或者多个

55

【Python基础】

__dict__是干什么用的

以字典的形式返回对象的所有成员
class Foo:
......
obj = Foo()
print(obj.__dict__) #返回对象里的所有成员
print(Foo.__dict__) #返回类里的所有成员

56

【Python基础】

删除模块中的全局变量或者函数(只是在内存里修改,对真正的原模块无影响)

delattr(commons,'name')

57

【z3】

五分之二怎么表示

把3转换为实数

16的开平方怎么表示?

求和是怎么表示?

Q(2,5)

把3转换为实数:
a = IntVal(3)
b = ToReal(a)

Sqrt(16)

sum() #里面参数必须是可迭代的,作用是把可迭代全部相加

58

【Python基础】

继承优先级考察:
class A:
def bar(self):
print('bar')
self.f1()

class B(A):
def f1(self):
print('B')

class C:
def f1(self):
print('C')

class D(C,B):
pass

d1 = D()
d1.bar()会输出什么

bar
C

59

【Python基础】

静态字段,静态方法,类方法,普通字段,普通方法:
那些成员是通过类访问的?那些是通过对象访问的?

通过类访问的:静态字段,静态方法,类方法

通过对象访问的:普通字段和类中的普通方法

60

【Python基础】

集合是什么?
创建集合有哪两种方式?

集合中的元素是唯一的,无序的,无索引
创建集合:
a = {'x','y','z'} 或 a = set(['x','y','z'])
set()里面只要是可迭代的就行,
如果是a = set('hello')则a为{'e','h','l','o'}

61

【Python基础】

commons.py文件内容为:
name = 'hijack'
要求通过字符串的形式去模块中找到name变量

m = __import__('commons')
getattr(m,'name')

62

【Python基础】

根据字符串形式倒入模块

如果模块在某个文件夹下呢,比如:commons模块在lib文件夹下

m = __import__('lib.commons',fromlist = true)

63

【正则表达式】

元字符有哪些

^$\[ ]?.+*( ) |{ }

64

【Python基础】

__name__是干什么的

只有执行当前py文件时,__name__ = "__main__"
如果被当作模块使用,则__name__ = 模块名

65

【Python基础】

dict = {'k1':'v1' , 'k2':'v2' , 'k3':'v3'}
dict.get('k2','没有')
dict.get('k4','没有')
分别返回什么?

v2
没有

并不会改变dict,只是查找用的,找不到就返回‘没有’

66

【正则表达式】

8-11位的数字,规则该怎么写

^\d{8,11}$

67

【正则表达式】

至少8位的数字,规则该怎么写

^\d{8,}$

68

【正则表达式】

re.findall('hij.ck','sldfkhijacksdlkjf')返回什么

['hijack']
.表示任意一个字符(换行符除外)

69

【z3】

n = 一个断言表达式
怎样查看一个表达式的子表达式个数
怎样查看断言表达式的子表达式
怎样查看第一个子表达式
怎样查看第二个子表达式
怎样查看两个子表达式的连接符号

n.num_args()
n.children()
n.arg(0)
n.arg(1)
n.decl() #如n = x+y>2返回>

70

【Python基础】

class Foo:
xo = 'xo'
__ox = 'ox'
def __init__(self):
pass

def __a(self):
print('i am a')

def fetch(self):
print(Foo.__ox) #合理吗
self.__a() #合理吗

pritn(Foo.xo) #合理吗
print(Foo.__ox) #合理吗
obj = Foo()
obj.fetch() #合理吗

class Foo:
xo = 'xo' #静态字段
__ox = 'ox' #__是私有成员修饰符,只有Foo的成员可以访问
def __init__(self):
pass

def __a(self):
print('i am a')

def fetch(self):
print(Foo.__ox) #合理
self.__a() #合理
对于私有成员,必须在内部间接地访问

pritn(Foo.xo) #合理
print(Foo.__ox) #不合理,只有内部成员能够访问
obj = Foo()
obj.fetch() #合理

71

【Python基础】

__call__()方法怎么使用

对象后面加小括号默认执行__call__()方法

class Foo:
def __init__(self):
print('init')
def __call__(self):
print('call')

r = Foo()
#执行__init__方法,获得一个对象,打印init

r1 = Foo()()
#在对象后面加括号,执行__call__方法
打印:
init
call

72

【正则表达式】

*表示什么

表示数量,0个或多个
因此如果规则是'hiajck*'
那么'hijac'也能匹配到

73

【Python基础】

dict = {'k1':'v1' , 'k2':'v2' , 'k3':'v3'}
如何删除'k2':'v2'键值对

dict.pop('k2')

74

【Python基础】

x = ['d','c','b','a']
请按顺序排列
这个函数是改变本身还是创建副本

x.sort()
改变本身

75

【正则表达式】

^开头表示什么

^hijack 表示以hijack开头的
[^a-z] 表示非a-z的任意一个字母

76

【Python基础】

怎样查看一个对象obj所属哪个类?

print(type(obj))

77

【Python基础】

怎样查看模块搜索路径

import os
print(sys.path)

78

【正则表达式】

?表示什么

表示数量,0个或1个

79

【Python基础】

x = ['a','b','c','d']
x[1:3]为?

['b','c']

80

【Python基础】

dict = {'k1':'v1' , 'k2':'v2' , 'k3':'v3'}
for i in dict:
print(i)会显示什么?

k3
k2
k1

in在字典里查找的是键

81

【正则表达式】

判断一个字符串是否全部为数字,规则该怎么写

^\d+$

82

【正则表达式】

\b代表什么

用于想匹配单词的时候,比如想匹配is,而不是rise
只要在is前后加上\b即可

re.findall(r'\babc\b','abc sdkkjdhsfabc')返回前面的abc

83

【z3】

ForAll(x,x>0)是什么意思?
Exits(x,x>0)是什么意思?

对于所有x,都满足x>0
存在一个x,使得x>0

84

【Python基础】

要求以字符串形式在模块commons中创建一个函数func1 lambda a:a+1

m = __import__('commons')
setattr(m,'func1',lambda a:a+1)

85

【正则表达式】

re.findall('a[bc]d',kabcdljabdlfacdls')返回什么?

['abd','acd']
[ ]只匹配字符集中的一个字符

86

【正则表达式】

非贪婪模式和贪婪模式的关键在哪里?

在于?
re.findall(r'a(\d+?),'a23b')返回['2']
re.findall(r'a(\d+),'a23b')返回['23']

87

【Python基础】

集合a = {1,2,3,4,5}
集合b = {4,5,6,7,8}
如何取并集?
如何取交集?

并集:c = a | b
交集:c = a & b

88

【Python基础】

__file__是干什么的?

__file__包括本身文件名在内的路径

找自身所处目录:
os.path.dirname(__file__)
上级:
os.path.dirname(os.path.dirname(__file__))
再上级:
os.path.dirname(os.path.dirname(os.path.dirname(__file__)))

89

【正则表达式】

\S代表什么

非空白字符

90

【Python基础】

__bultins__是什么意思

内置函数在__builtins__里面

91

【正则表达式】

反斜杠\在正则表达式中有哪三种作用?

1、去掉符号的特殊功能:\^
2、给普通字母特殊功能:\s
3、懒人专用,表示第几组规则,从1开始算起
如:
re.search(r'(alex)(eric)com\2','alexericcomeric')
返回'alexericcomeric'这里面的\2就代表eric,偷懒用的

92

【正则表达式】

\d代表什么

数字[0-9]

93

【Python基础】

class Provice:
country = 'China'

@staticmethod
def xo(arg1,arg2):
print('xo')

@classmethod
def xxoo(cls):
print('xxoo',cls)

def __init__(self.name):
self.name = name

def show(self):
print('hello')
请说出都是什么方法或字符

class Provice:
country = 'China' #静态字段

@staticmethod #静态方法
def xo(arg1,arg2):
print('xo')

@classmethod #类方法
def xxoo(cls):
print('xxoo',cls)

def __init__(self.name):
self.name = name #普通字段

def show(self): #普通方法
print('hello')

94

【Python基础】

__doc__是干什么的

py文件的注释自动存到这个全局变量里面

95

【z3】

x = Int('x')的另一种写法是什么?
a,b = Bools('a b')的另一种写法是什么?

x =Const('x',IntSort())
a,b = Consts('a b',BoolSort())

96

判断一个字符串是否是9位数字,规则该怎么写?

^\d{9}$

97

【Python基础】

member = ['a' , 8 , 3.14 , [1,2,3]]
把‘d'添加到member的最后
把['e','f']添加到最后
把'g'插入到2号索引位置

member.append('d')
member.extend(['e','f'])
member.insert(2,'g')

98

【Python基础】

__package__是干什么的

from bao import mokuai
print(mokuai.__package__)
打印bao