2019-12-21

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
# 三引号 - 直接换行
print("""\
千寻你好,人们叫我'无脸男'
这个世界的人都选择无视我
只有你看到了我并和我打招呼
我感到很孤单,很孤单
你愿意和我成为朋友吗?""")

# 双引号 - 转义换行
print("\n千寻你好,人们叫我'无脸男'\n这个世界的人都选择无视我\n只有你看到了我并和我打招呼\n我感到很孤单,很孤单\n你愿意和我成为朋友吗?")

# 单引号 - 转义换行,转义单引号
print('\n千寻你好,人们叫我\'无脸男\'\n这个世界的人都选择无视我\n只有你看到了我并和我打招呼\n我感到很孤单,很孤单\n你愿意和我成为朋友吗?')

# %s - 字符串
print('%s' % str)

# %f - 浮点数
print('%f' % float)

# %d - 整数型
print('%d' % int)

# 示例
print('%s%d'%('数字:',0))

Python 列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
students = ['小明', '小红', '小刚']

# 从列表中提取单个元素:"小刚"
students[2]

# 从列表中提取多个元素:['小明', '小红']
students[:2]

# 给列表增加/删除元素:
students.append('小美')
del students[1]

# 用于移除列表中一个元素,默认取最后一个元素
students.pop()
students.pop(0)

Python 字典

1
2
3
4
5
6
7
8
9
# 字典
scores = {'小明': 95, '小红': 90, '小刚': 90}

# 从字典中提取元素
scores['小明']

# 从字典中增加/删除
scores['小美'] = 85
del scores['小明']

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# 类的继承
class Chinese:
pass


class Cantonese(Chinese):
pass


chinese = Chinese()
cantonese = Cantonese()

print('\n验证1:子类创建的实例同时也属于父类')
print(isinstance(chinese, Chinese))
print(isinstance(cantonese, Chinese))

print('\n验证2:父类创建的实例不属于子类。')
print(isinstance(chinese, Cantonese))

print('\n验证3:类创建的实例都属于根类。')
print(isinstance(chinese, object))
print(isinstance(cantonese, object))


# 多层继承
class EarthMan:
pass


# 中国人继承了地球人
class Chinese(EarthMan):
def __init__(self, name):
self.name = '中国人'


# 广东人继承了中国人,同时也继承了地球人。
class Cantonese(Chinese):
def __init__(self, name, type = 'foo'):
Chinese.__init__(self, name)


# 多重继承:多重继承中,若某父类还有父类的话,会先继续往上找到顶
class Su:
born_city = 'JiangSu'
wearing = 'thick'

def diet(self):
print('我们爱吃甜。')


class Yue:
settle_city = 'GuangDong'
wearing = 'thin'

def diet(self):
print('我们吃得清淡。')


class Yuesu(Yue, Su):
pass


xiaoming = Yuesu()
# 先在 Yue类找,找到了,打印出来。

print(xiaoming.wearing)
# Yue类没有born_city,才去Su类找。

print(xiaoming.born_city)
# 方法调用,和属性调用一样,也符合就近原则。

xiaoming.diet()

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
# 读文件:开 - 读 - 关
file1 = open('/test.txt', 'r', encoding='utf-8')
fileContent = file1.read()
file1.close()


# 写文件:开 - 写 - 关
file1 = open('/test.txt', 'a', encoding='utf-8')
fileContent = file1.read()
file1.close()

# 读取信息
with open('test.txt', 'r') as f:
# 这时,lines 的数据存放在内存里。
lines = f.readlines()

# 将读取到的内容打印出来,发现实际上读到的是带换行符的字符串。
print(lines)

with open('test.txt','w') as new:
# 在内存中,对数据进行处理,然后再写到文档里,覆盖之前的内容。
for line in lines:
# 注意:这里的条件要根据上面打印出的数据写。
if line not in ['0\n','1\n']:
new.write(line)

image

Python CSV 读写

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
import csv
#引用csv模块。

csv_file = open('demo.csv','w',newline='',encoding='utf-8')
#调用open()函数打开csv文件,传入参数:文件名“demo.csv”、写入模式“w”、newline=''、encoding='utf-8'。

writer = csv.writer(csv_file)
# 用csv.writer()函数创建一个writer对象。

writer.writerow(['电影','豆瓣评分'])
#调用writer对象的writerow()方法,可以在csv文件里写入一行文字 “电影”和“豆瓣评分”。

writer.writerow(['银河护卫队','8.0'])
#在csv文件里写入一行文字 “银河护卫队”和“8.0”。

writer.writerow(['复仇者联盟','8.1'])
#在csv文件里写入一行文字 “复仇者联盟”和“8.1”。

csv_file.close()
#写入完成后,关闭文件就大功告成啦!


csv_file = open('demo.csv','r',newline='',encoding='utf-8')
reader = csv.reader(csv_file)
for row in reader:
print(row)

Python Excel 读写

Excel 相关概念

一个Excel文档也称为一个工作薄(workbook),每个工作薄里可以有多个工作表(worksheet),当前打开的工作表又叫活动表。每个工作表里有行和列,特定的行与列相交的方格称为单元格(cell)。比如上图第A列和第1行相交的方格我们可以直接表示为A1单元格。

使用 openpyxl 库读写 Excel

1
pip3 install openpyxl

使用 openpyxl 库写 Excel 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 引用openpyxl
import openpyxl

# 利用openpyxl.Workbook()函数创建新的workbook(工作薄)对象,就是创建新的空的Excel文件
wb = openpyxl.Workbook()

# wb.active就是获取这个工作薄的活动表,通常就是第一个工作表
sheet = wb.active

#可以用.title给工作表重命名。现在第一个工作表的名称就会由原来默认的“sheet1”改为"new title"
sheet.title = 'new title'
sheet['A1'] = '漫威宇宙'

# 先把要写入的多行内容写成列表,再放进大列表里,赋值给rows
rows = [['美国队长','钢铁侠','蜘蛛侠'],['是','漫威','宇宙', '经典','人物']]
for i in rows:
sheet.append(i)

# 保存新建的Excel文件,并命名为“Marvel.xlsx”
wb.save('Marvel.xlsx')

使用 openpyxl 库读 Excel 示例

1
2
3
4
5
6
7
8
#读取的代码:
wb = openpyxl.load_workbook('Marvel.xlsx')
sheet = wb['new title']
sheetname = wb.sheetnames
print(sheetname)
A1_cell = sheet['A1']
A1_value = A1_cell.value
print(A1_value)

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
30
31
32
33
print(2+1) # 加法
# 3

print(1-2) # 减法
# -1

print(1*2) # 乘法
# 2

print(1/2) # 除法
# 0.5

print(2**3) # 幂(2 的 3 次方)
# 8

print(10%3) # 取模(做除法返回余数)
# 1

print(10//3) # 取整数(做除法返回商的整数部分)
# 3


# 布尔运算符
# and 要求条件都满足才为 True
# or 要求其中一个条件满足就为 True
a = 1
b = -1
print(a == 1 and b == 1)
print(a == 1 or b== 1)

# not 反转真假
a = True
print(not a) # 判断为假

Python 异常捕获

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
num = [1,2,0,3,1.5,'6']
for x in num:
try: # 尝试执行下列代码
print (6/x)
except ZeroDivisionError:
print('0是不能做除数的!')
except TypeError: # 当报错信息为TypeError,执行下面的语句。
print('被除数必须是整值或浮点数!')

try:
print(6/x)
except (ZeroDivisionError, TypeError):
print('Something Wrong.')


try:
print(6/x)
except Exception:
print('Something Wrong.')

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
30
31
32
33
34
35
36
37
38
39
# 自定义函数
def $name($params):
$body
return $result

range(a, b, c)

# 计数从 a 开始,不填时,默认从 0 开始
range(a, 5)

# 计数到 b 结束,但不包括 b
range(b)

# 计数的间隔,默认为 1
range(0, 30, 5)


str.format()

# 优势1:不用担心用错类型码。
print('\n{}{}'.format('数字:',0))

# 不设置指定位置时,默认按顺序对应。
print('{},{}'.format(0,1))

# 优势2:当设置指定位置时,按指定的对应。
print('{1},{0}'.format(0,1))

# 优势3:可多次调用format后的数据。
print('{0},{1},{0}'.format(0,1))

numberList.index()

num = [0,1,0,1,2]
# 数字1首先出现的索引位置是list[1](索引位置从0开始)。
print(num.index(1))

# 数字2首先出现的索引位置是list[4]。
print(num.index(2))

Python 模块

image

image