这一学期也有开Python的课但是感觉不如自己学的快,之后的内容主要还是自己研究小甲鱼的Python书,视频也作为一个辅助吧……

1.断言(assert)

这个在其他的语言里没有见到过,这个的用法大抵和if一样,就是用来判断的,但是如果返回的是 false就会让程序【自我毁灭】。

1
2
assert 3 > 4
# 就会出现一串错误

这个是为了发现潜在的BUG,如果这个数值错误会导致BUG,不如在这里直接把他毁灭。也就是说当要确保某个条件一定要成立的时间可以做一个断言assert。

2.for循环 以及 循环中的else

1
2
3
4
for x in range(start,stop,step)
# 在python里的for中,in后面是一个“可迭代对象”,所以不能直接写一个数
# 如:
for x in 10 # 就是一个错误的

Python的起始结束位置一般都遵守 左闭右开 的原则,也就是[start,end),这一点要特别注意,因此在遍历1-100的时间:

1
for x in range(1,101)

Python循环的时候可以在最后加上else

1
2
3
4
5
sum = 0
for x in range(1,101)
sum += x
else
print(sum)

这样看来实际上和不加是一样的效果。这个其实只有在有break的时间才会产生应该有的作用:

1
2
3
4
5
6
for x in range(1,100)
if x == 50:
print("yes")
break
else
print("no")

这样就可以在有特定情况下输出一种,如果没有特定情况就输出另一种文本;

其实就相当于少写了一段if的判断,下面就是上面的完全版,确实是省略了不少东西!

1
2
3
4
5
6
7
8
9
bool k = false;
for x in range(1,100)
if x == 50:
k = true
break
if k == true :
print(yes)
else
print(no)

3.列表

Python的变量没有数据类型,所以Python的“数组”可以同时存放不同类型的变量。

基本的函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
number = [1, 2, 3]
#添加单个新元素
number.append(4)
>>> number = [1, 2, 3, 4]

#添加多个新元素
number.extend([8, 9])
>>> number = [1, 2, 3, 4, 8, 9] #实际上是使用一个列表来扩充另一个列表,所以他的参数是列表

#插入新元素
number.insert(pos,num)
#这里的pos是相对位置,可以是负数
number.insert(-1,x) #在倒数第一个元素之前插入一个x

#获取列表长度
len(number)#当然因为Python很神奇这个函数倒是用的少,毕竟可以相对距离和自动到结束

#使用random模块从列表中随机选择一个元素
import random
random.choice(number)

#删除列表中元素
number.remove(1) # 仅删除
number.pop() # 删除并输出最后一个
number.pop(1) # 删除并输出
del number[1] # 删除指定位置

#删除列表
del number # Python有垃圾回收机制,所以一般没有必要

Python最有意思的是可以用负数位置来代表与末尾的相对距离!

※列表切片

1
2
3
4
5
6
7
list1[start:end:step]
#按照上面的的参数可以省略,step默认为1,start默认为0,end默认为列表结尾
# 注意左闭右开
list1[:2] # 输出 list[0] list[1]
list1[2:] # 输出从list[2]到结尾
list1[:] # 全部输出
list1[-10:] # 输出最后十个元素!!!

切片不会修改列表自身的组成结构和数据,他其实是为列表创建了一个新的拷贝(副本)并返回。

可以通过把step 设置为-1来翻转列表

有的操作时可以直接作用于原始列表

1
2
del list1[::2] # 隔一个删一个
list1[0:2] = [1,2] #替换

常用操作符

1
2
# 合并两个列表
list3 = list2 + list1

一般情况下建议使用extend()来扩展列表,这样显得比较规范和专业。

“ * ”重复操作符也可以作用于列表中!

1
2
3
4
5
6
7
8
# 成员操作符
in
not in
list1 = [1, 2, 3]
>>> 4 in list1
False
>>> 3 in list1
True

进一步可以用这个方式来去重

1
2
3
4
5
old_list = [1, 1, 2, 3]
new_list = []
for x in old_list
if x not in new_list # 如果不存在于新列表中
new_list.append(x) # 放进去

列表函数Plus

1
2
3
4
5
6
7
8
9
10
11
# 返回某个元素在列表中出现的次数
list1.count(1)

# 返回某个元素第一次出现的索引值
list1.index(1,start,end) # 可以限定范围

# 列表翻转
list1.reverse()

# 列表排序
list1.sort() #默认从小到大

sort其实是有参数的

1
2
3
list1.sort(func,key,reverse)
# func一般就不用写,默认为归并排序,这里只有打开reverse就可以从大到小了
list1.sort(reverse = True)

4.元组

元组和列表大致相同,不同的是元组只可以被访问,不可以被修改

1
2
3
tuple1 = (1, 2, 3) # 用小括号,但是其实标识是逗号而不是小括号
tuple2 = 1, 2, 3 # 这样是元组
tuple3 = (123) #这样是整数类型

更新/删除元组

因为元组是不可以被修改的,因此也就不能通过赋值来更新,而是覆盖

1
x_men = (x_men[0] + "123") + x_men[:2] # 就相当于把第二个元素换成"123" ,实际上是覆盖

删除当然就是用del

1
del x_men

但是由于Python的垃圾回收机制会在某个对象不再被使用的时候自动进行清理,所以一般不需要用。

字符串

同样是不可以修改,但依然可以切片和拼接

字符串有不少内置函数,不在这里列举,等用到的时间再去查吧,只写一点常用的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
str1.find() # 查找,找不到返回-1
str1.replace("13","21") #把"13"换成"21"

# 拆分字符串
str2 = "肖申克的救赎/1994年/9.6分/美国"
str2.split(sep = '/') # sep设定分隔符
['肖申克的救赎', '1994年', '9.6分', '美国']

# 拼接字符串
str3 = ['你好''世界']
'-'.join(str3)
'你好-世界'
''.join(str3)
'你好世界' # .前面的是用什么来拼接

格式化

format()

1
2
3
"{0} love {1}.{c}".format("I","FishC",c = "com")
# 这里{}就是后面的字符串的位置或是参数
'I love FishC.com'

这个可能就是调用玩家姓名然后修改文本的时候可以用。

格式化操作符: %

1
2
'%c' % 97  # ASCII
'%d 转换为八进制为 %o' % (123,123)

序列

列表、元组、字符串统称为序列

常用BIF(内建方法)

1
2
3
4
5
6
7
8
9
10
11
list(可迭代对象) # 把可迭代对象转换为列表
list("132") # [1, 3, 2]
tuple(可迭代对象) # 转换为元组
str(obj) # 转换为字符串
len() # 返回长度
max(),min() # 返回最大最小
sum() #返回和
sorted() # 区别于sort,不修改列表只返回排序后的序列
reversed() # 同上
enumerate(可迭代对象) # 生成二元组
zip(可迭代对象1,可迭代对象2……) # 返回由各个可迭代参数共同组成的元组