Python Flashcards
【z3】
a = -6
32位的hex怎么表示
from z3 import *
a = BitVecVal(-6,32)
print(a.sexpr())
【Python基础】
写出异常模板
try: #主代码块 pass except KeyError as e: #异常时执行该块 pass except Exception as e: pass else: #如果没有任何异常,执行到这 pass finally: #无论异常与否,最终执行该块 pass
【z3】
print eq(x+y,y+x)返回什么
False
因为AST node的哈希值不同
(表达式,种类,声明被称为AST)
【Python基础】
定义一个类的格式是什么
class 类名: def 方法1(self,参数): pass def 方法2(self,参数): pass
self:形式参数,python内部自动传递
obj = 类名()
当执行obj.func1()时,self就是obj
【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__()
【正则表达式】
\s代表什么
\s代表空白字符
[\t\r\n\f\v]
【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]
【正则表达式】
[a-z]表示什么
[a-z]表示a到z中任意一个字母
【正则表达式】
$表示什么
匹配以xx结尾的
re. findall(‘hijack$’,’sldkjfshijacksdkjfh”)返回[ ]
re. findall(‘hijack$’,’sldkjfshijack”)返回[‘hijack’]
【Python基础】
如果我想要用户输入的字符为不可见要怎么做
import getpass
username = imput(‘your name:’).strip()
password = getpass.getpass(‘your password’:)
会造成好像没有输入的幻觉
【Python基础】
range(1,6)包括6吗?
random.randint(1,6)包括6吗?
rane(1,6)不包括6
只有random.randint()包括结束本身
其他都不包括结束本身
【正则表达式】
\w代表什么?
\w代表单词字符
[a-zA-Z0-9_]
【正则表达式】
re.findall(r’abc\b’,’abcskdjabcfh’)中的r是什么意思,为什么要加r
r的意思是raw_string原生字符串,正则中建议用raw
python有自己的关于\的规则,如\n,\t,\r
正则有自己的关于\的规则,如\w,\d
r使引号内的\失去python的\规则,保留正则的\规则
【Python基础】
a = [1,2]
b = [3,4]
a+b 是多少
[1,2,3,4]
【z3】
a = BitVec(‘a’,32)
经过一些solve得出的结果:m[a] = 842216501
想要把向量转换为python的整数型怎么做?
思路:位向量转换为16进制,再转换为十进制
m[a].sexpr()返回:”#x32333435”,
int(m[a].sexpr().replace(‘#’,’0’),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]
【Python基础】
ditc = {‘a’:’x’,’b’:’y’,’c’:’z’}怎样清空字典
dict.clear()
【Python基础】
member = [‘a’ , 8 , 3.14 , ‘b’ , [1,2,3]]
删除元素’b’的三种方法
member.pop(3)
member.remove[‘b’]
del member[3]
pop如果没有参数,就是弹出最后1个元素
【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为字典所有键对应的初始值
【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)
【z3】
我想建立一个z3py的整数型数组,所有的元素都是1
a,i = Ints(‘a i’)
AllOne = K(IntSort(),1)
solve(a == AllOne[i])
K(s,v)返回一个将s的任意值映射到v的数组
【z3】
请定义列表(5个元素)
整数型列表X
实数型列表Y
布尔型列表Z
from z3 import *
X = IntVector('x',5) Y = RealVector('y',5) Z = BoolVector('z',5')
【正则表达式】
[\d]表示什么
[\d]表示任意一个数字
【正则表达式】
\W表示什么?
\W表示非单词字符
【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’}
【z3】
怎样设置结果保留小数点后2位
怎样设置结果用10进制表示
set_option(precision = 2)
set_option(rational_to_decimal = True)
【Python基础】
zip([‘a’ , ‘b’] , [‘c’,’d’])的结果是什么
[(‘a’ , ‘c’) , (‘b’ , ‘d’)]
【z3】
Select(a,i)是什么意思
等价于a[i]
【Python基础】
a = 6 b = a 如果修改a = 7的话,b = ?
b还是6,因为另外出了个空间装7赋给a
【Python基础】
x = [‘a’,’b’,’c’,’d’]
反转x
这个反转函数是改变本身还是建立副本?
x.reverse()
改变本身
【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’)]
【Python基础】
列表num1 = [1,2,3,2,1]怎样去重复
num1 = list(set(num1))
【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)
【z3】
求解器怎么表示 怎样添加约束 怎样查看求解器的断言表达式列表 怎样查看是否有解 s.push()......s.pop()什么意思 求解器怎样查看x的值
s = Solver() s.add(各种约束) s.assertions() s.check() 求解前一定要check一下,否则无法求解
共享之前的约束表达式,在push()和pop()中间加入自己的表达式及其他命令。
pop()后再删除自己的约束
s.model[x]
【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不会改变。
【Python基础】
x = [‘a’,’b’,’c’,’d’]
b的index是多少
(不要回答3,使用函数表示)
x.index(‘b’)
查索引函数x.index(‘a’,2,4)
后两个参数是范围,不包括4本身
【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)
【正则表达式】
\D代表什么
非数字
[^0-9]
【Python基础】
随机选择 语文,数学,英语
import random
x = random.choice([‘语文’ , ‘数学’ , ‘英语’])
【Python基础】
模块commons.py的内容为:
name = ‘hijack’
要求判断模块中有没有name变量
import commons
i = hasattr(commons,’name’)
【Python基础】
如何使以下两个列表组成一个字典?
key = [1,2]
value = [‘a’,’b’]
d = dict([key,value])
【Python基础】
封装是什么意思?
封装的使用场景是什么?
类+():
自动执行类中的__init__方法,创建了一个对象。
在__init__方法中执行具体封装的操作,创建并封装的过程叫初始化。
封装的使用场景:
1、当同一类型的方法具有相同参数时
2、把类当作模板,创建多个对象时
【正则表达式】
[^a-z]表示什么?
除了a-z以外的任意一个字符
【z3】
(x+y)3
把这个表达式打开来,表示成xxx + 3xxy + 3xyy +yyy这种形式,要怎样做?
mul_to_power = True把aaa形式转换为a**3的形式
simplify((x+y)**3,som = True) #som = True表示以单项式形式表示
【Python基础】
集合a = {‘e’ , ‘h’ , ‘l’ , ‘o’}
如何添加一个元素’w’
如何再去掉这个元素’w’
a. add(‘w’)
a. remove(‘w’)
【正则表达式】
{ }表示什么?
表示数量
{3}匹配3次
{3,5}匹配3次或4次或5次
【Python基础】
import requests要求用字符串的形式找到requests的get函数,并执行
import requests
f = getattr(requests,’get’)
f(‘http://baidu.com’) #函数名加个括号就是执行
【Python基础】
我想把当前python主文件同级目录下的lib增加到环境变量里面,以便其他人可以使用,该怎么做
import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__),’lib’))
【z3】
Store(a,i,v)是什么意思?
返回一个数组副本,只是i的位置有了数值v
并不改变原有的数组a
【z3】
怎样证明两个断言表达式等价?
n = 断言表达式1
m = 断言表达式2
prove(m == n)
成功则proved
失败则会列出一个返例
【z3】
请定义z3常量:
b = -1(按照16位位响亮定义)
from z3 import *
b = BitVecVal(-1,16)
【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
【z3】
Implies(p,C)是什么意思
如果p成立,则C成立
【正则表达式】
+表示什么
表示数量
1或者多个
【Python基础】
__dict__是干什么用的
以字典的形式返回对象的所有成员 class Foo: ...... obj = Foo() print(obj.\_\_dict\_\_) #返回对象里的所有成员 print(Foo.\_\_dict\_\_) #返回类里的所有成员
【Python基础】
删除模块中的全局变量或者函数(只是在内存里修改,对真正的原模块无影响)
delattr(commons,’name’)
【z3】
五分之二怎么表示
把3转换为实数
16的开平方怎么表示?
求和是怎么表示?
Q(2,5)
把3转换为实数:
a = IntVal(3)
b = ToReal(a)
Sqrt(16)
sum() #里面参数必须是可迭代的,作用是把可迭代全部相加
【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
【Python基础】
静态字段,静态方法,类方法,普通字段,普通方法:
那些成员是通过类访问的?那些是通过对象访问的?
通过类访问的:静态字段,静态方法,类方法
通过对象访问的:普通字段和类中的普通方法
【Python基础】
集合是什么?
创建集合有哪两种方式?
集合中的元素是唯一的,无序的,无索引 创建集合: a = {'x','y','z'} 或 a = set(['x','y','z']) set()里面只要是可迭代的就行, 如果是a = set('hello')则a为{'e','h','l','o'}
【Python基础】
commons.py文件内容为:
name = ‘hijack’
要求通过字符串的形式去模块中找到name变量
m = __import__(‘commons’)
getattr(m,’name’)
【Python基础】
根据字符串形式倒入模块
如果模块在某个文件夹下呢,比如:commons模块在lib文件夹下
m = __import__(‘lib.commons’,fromlist = true)
【正则表达式】
元字符有哪些
^$[ ]?.+*( ) |{ }
【Python基础】
__name__是干什么的
只有执行当前py文件时,\_\_name\_\_ = "\_\_main\_\_" 如果被当作模块使用,则\_\_name\_\_ = 模块名
【Python基础】
dict = {‘k1’:’v1’ , ‘k2’:’v2’ , ‘k3’:’v3’}
dict.get(‘k2’,’没有’)
dict.get(‘k4’,’没有’)
分别返回什么?
v2
没有
并不会改变dict,只是查找用的,找不到就返回‘没有’
【正则表达式】
8-11位的数字,规则该怎么写
^\d{8,11}$
【正则表达式】
至少8位的数字,规则该怎么写
^\d{8,}$
【正则表达式】
re.findall(‘hij.ck’,’sldfkhijacksdlkjf’)返回什么
[‘hijack’]
.表示任意一个字符(换行符除外)
【z3】
n = 一个断言表达式 怎样查看一个表达式的子表达式个数 怎样查看断言表达式的子表达式 怎样查看第一个子表达式 怎样查看第二个子表达式 怎样查看两个子表达式的连接符号
n. num_args()
n. children()
n. arg(0)
n. arg(1)
n. decl() #如n = x+y>2返回>
【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() #合理
【Python基础】
__call__()方法怎么使用
对象后面加小括号默认执行__call__()方法
class Foo: def \_\_init\_\_(self): print('init') def \_\_call\_\_(self): print('call')
r = Foo() #执行\_\_init\_\_方法,获得一个对象,打印init
r1 = Foo()() #在对象后面加括号,执行\_\_call\_\_方法 打印: init call
【正则表达式】
*表示什么
表示数量,0个或多个
因此如果规则是’hiajck*’
那么’hijac’也能匹配到
【Python基础】
dict = {‘k1’:’v1’ , ‘k2’:’v2’ , ‘k3’:’v3’}
如何删除’k2’:’v2’键值对
dict.pop(‘k2’)
【Python基础】
x = [‘d’,’c’,’b’,’a’]
请按顺序排列
这个函数是改变本身还是创建副本
x.sort()
改变本身
【正则表达式】
^开头表示什么
^hijack 表示以hijack开头的
[^a-z] 表示非a-z的任意一个字母
【Python基础】
怎样查看一个对象obj所属哪个类?
print(type(obj))
【Python基础】
怎样查看模块搜索路径
import os
print(sys.path)
【正则表达式】
?表示什么
表示数量,0个或1个
【Python基础】
x = [‘a’,’b’,’c’,’d’]
x[1:3]为?
[‘b’,’c’]
【Python基础】
dict = {‘k1’:’v1’ , ‘k2’:’v2’ , ‘k3’:’v3’}
for i in dict:
print(i)会显示什么?
k3
k2
k1
in在字典里查找的是键
【正则表达式】
判断一个字符串是否全部为数字,规则该怎么写
^\d+$
【正则表达式】
\b代表什么
用于想匹配单词的时候,比如想匹配is,而不是rise
只要在is前后加上\b即可
re.findall(r’\babc\b’,’abc sdkkjdhsfabc’)返回前面的abc
【z3】
ForAll(x,x>0)是什么意思?
Exits(x,x>0)是什么意思?
对于所有x,都满足x>0
存在一个x,使得x>0
【Python基础】
要求以字符串形式在模块commons中创建一个函数func1 lambda a:a+1
m = __import__(‘commons’)
setattr(m,’func1’,lambda a:a+1)
【正则表达式】
re.findall(‘a[bc]d’,kabcdljabdlfacdls’)返回什么?
[‘abd’,’acd’]
[ ]只匹配字符集中的一个字符
【正则表达式】
非贪婪模式和贪婪模式的关键在哪里?
在于?
re. findall(r’a(\d+?),’a23b’)返回[‘2’]
re. findall(r’a(\d+),’a23b’)返回[‘23’]
【Python基础】
集合a = {1,2,3,4,5}
集合b = {4,5,6,7,8}
如何取并集?
如何取交集?
并集:c = a | b 交集:c = a & b
【Python基础】
__file__是干什么的?
__file__包括本身文件名在内的路径
找自身所处目录:
os.path.dirname(__file__)
上级:
os.path.dirname(os.path.dirname(__file__))
再上级:
os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
【正则表达式】
\S代表什么
非空白字符
【Python基础】
__bultins__是什么意思
内置函数在__builtins__里面
【正则表达式】
反斜杠\在正则表达式中有哪三种作用?
1、去掉符号的特殊功能:\^ 2、给普通字母特殊功能:\s 3、懒人专用,表示第几组规则,从1开始算起 如: re.search(r'(alex)(eric)com\2','alexericcomeric') 返回'alexericcomeric'这里面的\2就代表eric,偷懒用的
【正则表达式】
\d代表什么
数字[0-9]
【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')
【Python基础】
__doc__是干什么的
py文件的注释自动存到这个全局变量里面
【z3】
x = Int('x')的另一种写法是什么? a,b = Bools('a b')的另一种写法是什么?
x =Const(‘x’,IntSort())
a,b = Consts(‘a b’,BoolSort())
判断一个字符串是否是9位数字,规则该怎么写?
^\d{9}$
【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’)
【Python基础】
__package__是干什么的
from bao import mokuai
print(mokuai.__package__)
打印bao