python期末考试知识点总结_python《信息安全专业导论》期末考试知识点总结

1 ###数据类型:1.数字类型(不可变):整型(int)、浮点型(float)、布尔型(bool)、复数类型(Complex)

2 #int*float=float、int/int=float、int*str=str(3*'a'='aaa')

3 #2.字符串(str)(包含在引号中的字符序列)(不可变)

4 #3.序列:列表(可变)(x=[a,b,c···])

5 #元组(不可变)(x=(a,b,c···))

6 #字典(可变)(x=[a:h,b:i,c:j···])

7 #4.集合(可变/不可变)

8

9 ###运算符(优先级从高到低):0.()

10 #1.[表达式]:abs(求绝对值)

11 #min(求最小值)

12 #max(求最大值)

13 #sqrt(开方)

14 #len(求字符串长度或列表、元组、字典的元素个数)

15 #2.x[i](索引运算符)(访问字符串x的第i个字母或列表、元组、字典x的第i个元素)

16 #(i是索引:该字符相对于第一个字符的偏移量,第一个字符索引为0)

17 #3.**(乘幂)

18 #4.+x,-x(正号,负号)

19 #5.*、/、//、%(乘法、除法、整除、取模/求余数)

20 #6.+、-(加法、减法)

21 #7.in、not in、、>=、!=、==(布尔运算符)

22 #8.not x(布尔非)

23 #9.and(布尔与)

24 #10.or(布尔或)

25

26 ###列表运算符(一定有返回值):in lst、not in lst、lst+lst、lst*(int)、lst[i]、len(lst)、min(lst)、max(lst)、sum(lst)

27 #列表方法(不一定有返回值):list.append(i)(把i添加到lst尾部)

28 #(print(无返回值的方法)会 lst.count(i)(返回i在lst中出现的次数)(有返回值)

29 #输出None) lst.index(i)(返回i在lst中第一次出现的索引号)(有返回值)

30 #lst.insert(index,i)(在lst中索引index之前插入i))

31 #lst.pop()(移除lst中的最后一项)

32 #lst.remove(i)(移除lst中的第一个i)

33 #lst.reverse()(将lst的项逆序排列)

34 #lst.sort()(将lst排序)

35

36 ###类型转换:int()、float()、str()

37

38 ###调用python库:1.import x(调用x库)(使用y方法:x.y)

39 #2.from x import y(只调用x库的y方法)(使用y方法:y)

40 #3.from x import *(调用x库的所有方法和变量名)(使用y方法:y)

41

42 ###输入与输出:print(i)(输出变量i的值)

43 #print(i,j,sep=';')(输出i,j,并用;间隔开)

44 #print(i,end='')(输出i,用空格结尾)

45 #print('a,{}:c,d:{},f'.format(b,e))(单引号之间是输出内容,大括号依次用format括号中的变量替换,

46 #输出结果为a,b:c,d:e,f)(大括号中可以指定输出方式:{:3。2}为占三个宽度输出并保留两位小数,

47 #{:f/d}是以浮点型/整型输出,{:b/c/d/o/x}是以二进制/字符串/十进制/八进制/十六进制输出)

48 #x=input("")(输入一个字符串并赋值给变量x)(引号中为提示语,可省略)

49 #x=eval(input())(输入一个字符串并将其转换成整型后赋值给变量x)(引号中为提示语,可省略)

50 #x=list(input().split)(将用空格隔开的元素依次储存在列表中)

51

52 ###控制结构:if:1.if(判断条件):

53 #缩进语句块

54 #elif(判断条件):

55 #缩进语句块

56 #else:

57 #缩进语句块

58 #非缩进语句

59 #判断条件之间应互斥,执行if语句时先判断,当一个条件为True时执行对应的缩进语句,所有条件判断都为False时执行else对应的缩进语句块

60

61 ###循环结构:for···in···(遍历控制):1.for x in a(a为字符串、列表、元组、字典、集合):

62 #缩进语句块(循环次数为a中元素个数)

63 #非缩进语句

64 #2.for x in range(a,b,c): (在a到b-1的范围中循环,c为步幅)

65 #缩进语句块

66 #非缩进语句

67 #while(条件控制):while (判断条件): (必须先初始化变量)

68 #缩进语句块(当条件判断为True的时候执行)

69 #非缩进语句

70 #while True: (循环无限次)

71 #缩进语句块()

72 #非缩进语句

73

74 ###迭代控制语句:1.break(执行break语句时,停止当前循环迭代,退出循环,继续执行紧跟在循环语句后面的语句,如果中断语句

75 #在嵌套循环模式的循环体代码中,则只中断包含break语句的最内层循环)

76 #2.continue(终止当前最内层的循环迭代,与break语句不同的是,执行continue语句后继续执行当前最内层

77 #循环的下一次迭代)

78 #简单来说就是break停止整个循环,continue停止这一次迭代

79

80 ###定义函数:def x(a,b···): (定义一个函数x,带有若干参数a,b···)

81 #缩进语句块(将变化后的结果赋值给变量y)

82 #ruturn y (将变量y返回)

83 #调用函数:z=x(a,b···)(最终会把变量y的值赋给变量z)

84

85 ###字符串切割:s[i:j](是字符串s从i到j-1结束的子字符串)(i=0时可省略i变为s[:j],j为最后一位时可省略j变为s[i:])

86 #s[-i:-j](是字符串s从-i到-(j-1)结束的子字符串)(正向i从0开始,逆向i从1开始)

87 #88

89 ###字符串方法:a.find(i)(检查i是否是a的子字符串,如果是,返回字符串a中第一次出现i的位置,否则返回-1)

90 #a.count(i)(返回i作为子字符串在a中出现的次数)

91 #a.replace(i,j)(返回一个副本,其中所有的子字符串i被替换为j,不改变a)

92 #a.split(i j)(切开所有空格,将所得结果储存在列表中,并返回该列表)

93

94 ###打开文件:a=open('x.txt','r')(打开名为x的文件并将其赋值给变量a)(读取模式)

95 #a=open('x.txt','w')(打开名为x的文件并将其赋值给变量a)(写入模式,如果文件已存在,则清除原内容)

96 #a=open('x.txt','a')(打开名为x的文件并将其赋值给变量a)(附加模式,将数据内容附加写入到文件末尾)

97 #a=open('x.txt','r')(打开名为x的文件并将其赋值给变量a)(b)(二进制模式)

98

99 ###文件对象方法:a.read(n)(从a中读取n个字符或直到文件末尾,并把读取的字符作为一个字符串返回)

100 #a.read()(从a中读取全部字符,并把读取的字符作为一个字符串返回)

101 #a.readline()(从a中读取一行数据,直到包括换行符或直到文件末尾,并把读取的字符作为一个字符串返回)

102 #a.write(s)(把字符串s写入到a中)

103 #a.close()(关闭文件)

104

105 ###字典:(可变类型)也叫映射,包含一系列键值对,用:隔开。比如x={a:b,c:d,e:b},索引键时会输出对应的值,比如x[a]=b,x[e]=

106 #(键和值都为字符串或已初始化的变量)

107

108 ###字典运算符:与列表运算符基本相同,不能使用+和*,由于字典没有顺序,也不能使用索引运算符。

109

110 ###字典方法:假设字典x{a:b,c:d,e:a}

111 #x.pop(a/c/e)(移除字典x的某个键)

112 #y.update(x)(将字典x的键值对添加到字典y中)(键相同时x中的键值对会覆盖掉y中的键值对)

113 #x.keys()(返回字典x的所有键)

114 #x.values()(返回字典x的所有值)

115 #x.items()(返回字典x的所有键值对)

116

117 ###集合:(不可变类型)用大括号定义,x={a,b,c}具有数学集合的全部特征,不允许重复项

118

119 ###集合方法:x.add(a)(把a添加到集合x中)

120 #x.remove(a)(把a从集合x中删除)

121 #x.clear(清空集合)

122

123 #随机方法:(调用random库)random.shuffle(x)(把列表x混排一次)

124 #y=random.choice(x)(从列表x中随机选择一项赋值给y)

125 #y=random.sample(x,n)(从列表x中随机选择n项组成列表并赋值给y)

126

127 ###名称空间:每个函数都有自己的一个名称空间,在主函数中定义的变量(全局变量)与在自定义函数中定义的同名变量(局部变量)互不干扰。

128 #在自定义函数中使用全局变量时首先应该通过global x来声明变量x使用全局变量

129

130 ###递归:递归函数是调用自身的函数。包含1.一个或多个基本情况,为递归提供停止条件。

131 #2.一个或多个递归调用,相对与输入参数,其输出参数必须更接近基本情况。

132

133 ###几个实例

134 #斐波那契数列

135 def fib(n):#累加器

136 previous=1

137 current=1

138 i=1

139 while i<140 previous i>

142 returncurrent143 def rfib(n):#递归

144 if n<2:145 return 1

146 return rfib(n-1)+rfib(n-2)147 #二分查找

148 from collections importdeque149 def binary(x, y):#定义一个函数,带两个输入参数x,y。x为待检索列表,y为要检索的对象

150 first = 0#将first初始化为0

151

152 last = len(x)#将列表的长度赋值给last

153 x.sort()#将列表排序

154 for j in range(last):#迭代last次

155 i = (first+last)//2#取first和last的平均值

156 a = x[i]#把x的第i项赋值给a

157 if(y > a):#将y与a比较,如果y>a

158 first = i#把first赋值给i,舍弃i前的列表

159 elif(y < a):#将y与a比较,如果y

160 last = i #把last赋值给i,舍弃i后的列表

161 elif(y == a):#如果y=a

162 return True#返回真,即存在

163 return False#如果迭代结束后仍未搜索到,返回假

164 #快速排序

165 def quicksort(s):#定义函数

166 if len(s) < 2:167 return s#如果列表小于2,不用排序

168 p = s[0]#选一个基准值

169 l = []#小于基准值的列表

170 e = []#等于基准值的列表

171 r = []#大于基准值的列表

172 while len(s) > 0:#当列表不为空时

173 if s[-1] < p:#如果列表最后一项小于基准值

174 l.append(s.pop())#把列表最后一项加入l中并将其从列表中删除

175 elif s[-1] == p: #如果列表最后一项等于基准值

176 e.append(s.pop()) #把列表最后一项加入e中并将其从列表中删除

177 else: #如果列表最后一项大于基准值

178 r.append(s.pop()) #把列表最后一项加入r中并将其从列表中删除

179 quicksort(l)#递归l

180 quicksort(r)#递归r

181 s.extend(l)182 s.extend(e)183 s.extend(r)#经过上述变化后s是空列表,将l,e,r依次加入到s中

184 return s #返回s

185

186 #广度优先搜索

187 #题目:假设你经营着一个芒果农场,需要寻找芒果销售商,以便将芒果卖给他,你的人际关系如图,已知名字最后一位字母是m的是芒果

188 #销售商,请找到和你关系最近的芒果销售商

189 graph ={}190 graph["you"] = ["alice", "bob", "claire"]191 graph["bob"] = ["anuj", "peggy"]192 graph["alice"] = ["peggy"]193 graph["claire"] = ["thom", "jonny"]194 graph["anuj"] ={}195 graph["peggy"] ={}196 graph["thom"] ={}197 graph["jonny"] = {}#以上部分为用字典构建图

198

199 defperson_is_seller(name):200 return name[-1] == 'm'#只有最后一行字母是m才返回

201

202 def search(name):#定义一个搜索函数

203 search_queue = deque()#创建一个队列

204 search_queue += graph[name]#把初始节点的子节点加入队列

205 searched = []#定义一个已搜索列表

206 while search_queue:#当队列不为空时一直循环

207 person = search_queue.popleft()#将队列最左边的元素赋值给person并将其从队列中删除

208 if person not in searched:#如果person未被检索

209 if person_is_seller(person):#如果person满足条件

210 print(person, "is a mango seller!")#输出

211 return True#返回真

212 else:#如果person不满足条件

213 search_queue += graph[person]#将person的子节点加入队列

214 searched.append(person)#将person标记为已检索

215 return False#如果直到循环结束都没有返回真就返回假,即未搜索到

216 search("you")#运行搜索函数

217

218 #深度优先搜索

219 graph ={}220 graph["you"] = ["alice", "bob", "claire"]221 graph["bob"] = ["anuj", "peggy"]222 graph["alice"] = ["peggy"]223 graph["claire"] = ["thom", "jonny"]224 graph["anuj"] ={}225 graph["peggy"] ={}226 graph["thom"] ={}227 graph["jonny"] = {} #以上部分为用字典构建图

228

229 defperson_is_seller(name):230 return name[-1] == 'm' #只有最后一行字母是m才返回

231

232

233 def search(name): #定义一个搜索函数

234 search_queue = [name]#用列表来模拟栈

235 search_queue += graph[name] #把初始节点的子节点加入列表

236 searched = [] #定义一个已搜索列表

237 while search_queue: #当列表不为空时一直循环

238 person = search_queue[-1]#把列表最后一项赋值给person

239 search_queue.pop()#把列表最后一项删除

240 if person not in searched: #如果person未被检索

241 if person_is_seller(person): #如果person满足条件

242 print(person, "is a mango seller!")#输出

243 return True#返回真

244 else: #如果person不满足条件

245 search_queue += graph[person] #将person的子节点加入列表

246 searched.append(person) #将person标记为已检索

247 else:#如果person已检索

248 search_queue.pop() #把列表最后一项删除

249 return False #如果直到循环结束都没有返回真就返回假,即未搜索到

250 search("you")#运行搜索函数

140>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值