Python快速入门
1. 基础
1.1 注释
# 在井号后面接的文字不会被python运行,一般用作写注释,方便自己/他人阅读
1.2 命名规范
- 变量
变量名是全小写,单词之间用下划线_
连接:var_name = expression
- 函数名(待补充)
- 文件名(待补充)
1.3 定义函数
def sum(x,y):
# 每个方程开始的时候可以用3对双引号写一下这个方程的作用/不足/假设,例如这个sum:
"""
把输入的两个数相加
"""
total = x + y
return total
第一行:def
是告诉python你开始定义方程,sum
是方程名字,括号里的x
和y
是输入的变量,:
表示接下来是我们要进行的运算。
第二行:
4个空格是他的格式排版要求,不打的话python会无法识别。total = x + y
的意思是新建变量total
用来储存x+y
的值。
第三行:关键词return
告诉python这个方程写完了要输出值。return total
的意思就是输出变量total
的值。
2. 数据
2.1 数据类型
用type()
我们可以知道一个变量的类型:
type(2) # <class ’int’> 整数
type(2 / 3) # <class ’float’> 浮点数(小数)
type("zero") # <class ’str’> 字符串
type("1") # <class ’str’> 字符串
type(1 < 0) # <class ’bool’> 布尔型
- 整数
int
: 正负整数。 - 小数
float
: 值域: ±1.79 × 10308。 - 字符串
str
: 用单引号或者双引号引起来的内容。1
是整数但"1"
是字符串。 - 数列
list
: 同一类型数据的集合(第3.1节会细讲) - 字典
dict
: key-value pairs(第5节会细讲) - 集合
set
: 无序,无重复的元素集合,不一定要同一类型(第6节会细讲)
2.2 数据类型转换
进行强制类型转换:
int(2.0)
float(" -1.05")
str(0.75 * 1.75)
2.3 数字类型
运算:加+, 减-, 乘*, 除/
更多运算:指数**,向下整除//,求余%
比较:>, <, >=, <=, ==, !=
3. 条件判断与循环
3.1 list
l1 = [1,2,3,4] # 这就是一个包含1,2,3,4的整数列,被储存在一个叫做l1的变量里
l2 = ["你好","我也好"] # list可以储存多种数据类型比如字符串(String)
# 用print()可以打印变量
print("l1的类型是:",type(l1)) # type
print("l1的长度是:",len(l1)) # length
print("l1的第0个元素是:",l1[0]) # index
print(l1+l2) # 把l1, l2并在一起
print(l1*2) # 把l1复制两遍
输出结果:
l1的类型是: <class ‘list’>
l1的长度是: 4
l1的第0个元素是: 1
[1, 2, 3, 4, ‘你好’, ‘我也好’]
[1, 2, 3, 4, 1, 2, 3, 4]
值得一提的是,我们还可以截取list中的一部分,格式是list_name[start:end:step-size]
。list_name
就是我们list的变量名,start:end
就是我们的起始和中止index
。step-size
就是我们要截取的步长,是隔一个取一个还是隔多几个。比如:
# l1的第0-3个元素, 不包括第3个元素
print(l1[0:3:1]) # 一个取一个
print(l1[0:3:2]) # 两个取一个
print(l1[0:3:3]) # 三个取一个
[1, 2, 3]
[1, 3]
[1]
其他内置函数:sorted(), max(), min(), append(), insert(), pop(), extend(), reverse()
等。
3.2 用for遍历list
def sumList(input_list):
'''
把list里所有数相加
'''
total = 0 # 新建total变量,用于储存总和
for number in input_list: # 对于输入变量input_list的每一个元素
total = total + number # 把这个元素加进总和
return total # 输入total
for还有另一种写法:
def sumList(input_list):
'''
把list里所有数相加
'''
total = 0 # 新建total变量,用于储存总和
for i in range(len(input_list)): # i从0到list的长度
total = total + input_list[i] # 用index把list的每个元素加进总和
return total # 输入total
拓展(列表解析):
通常我们可以用for循环来创建自己想要的list,比如:
l = []
for i in range(10):
l.append(i)
# 那么l现在就等于[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
列表解析可以说是for的另一种用法,但是运行速度会比for循环快!而且代码会更简洁!我们可以用以下一行代码实现以上的for循环,如下:
l = [i for i in range(10)]
3.3 while loop
while与for都是循环,但是while是根据条件来判断是否停止循环。
def sumList(input_list):
'''
把list里所有数相加
'''
total = 0 # 新建total变量,用于储存总和
i = 0 # 新建i变量
while i < len(input_list): # 当i小于list的长度
total = total + input_list[i] # 用index把list的每个元素加进总和
i++ # i自增,等同于 i=i+1
return total # 输入total
3.4 if-else 条件判断
与while一样是根据条件判断进行操作,但不循环。
if is_Dog():
# 如果你是狗进行接下来的操作
else:
# 如果你不是,进行接下来的操作
基于sumList()
,比如我们这次想把偶数都加起来:
def sumListEven(input_list):
'''
把list里所有偶数相加
'''
total = 0 # 新建total变量,用于储存总和
for number in input_list: # 对于输入变量input_list的每一个元素
# 如果除以二余数为0,则进行接下来的操作。
if (number%2 == 0): # ‘%’的意思是余数
total = total + number # 把这个元素加进总和
return total # 输入total
运行一下:
sumListEven([2,3,4])
6
4. 包package
package就是想python的外置工具箱,常用包有math,numpy,scipy。
这里拿math举例,更多关于math的函数详见:https://docs.python.org/3/library/math.html
# 要使用包需要先导入:
import math
可以调用一些数学的变量,比如:
math.pi
math.sin(30)
math.sqrt(4)
4.1 画图
# 导入包
import matplotlib.pyplot as plot
# 绘制直方图
plot.hist([first col, last col])
plot.legend(["column A", "column D"])
plot.show()
# 绘制折线图
plot.plot(first col, last col)
plot.xlabel("column A")
plot.ylabel("column D")
plot.show()
更多详见数据可视化:Python Matplotlib.pyplot 概要
4.2 导入csv文件
import csv
with open("filename.csv") as csvfile:
reader = csv.reader(csvfile)
data = [ row for row in reader ]
第几行第几列的数据读取:
data[i] # i:th row
data[i][j] # j:th column of i:th row
某一列数据读取:
first_col = [ row[0] for row in data ]
last_two_cols = [ row[-2:] for row in data ]
满足某条件(此行的第一个数据>1)的行:
sel_rows = [ row for row in data if row[0] > 1 ]
4.3 读取txt文件
my_file = open("notes.txt", "r") # 用“r”(阅读模式)打开文件
first_line = my_file.readline() # txt文件的第一行
second_line = my_file.readline()# txt文件的第二行
my_file.close() # 关闭文件
打开文件之前可以用os.path.exists(file_path)
来确认文件是否存在。
5. 字典
字典是什么?之前有提到字典就是key-value
pairs,那具体是什么意思呢?
举个栗子:我现在创建一个字典来储存班里学生这次考试的分数,那我的key-value
pair就是学生姓名-分数
。那我们给这个字典取名score
。假设我们现在有两个学生:韩梅梅与李雷,他们分别考了98与60分:
score = { "han meimei" : 98, "li lei" : 60 }
那我们这个非常简单的字典就创建完成了!那字典有什么作用呢?
- 读取成绩
score["han meimei"] # 就会输出han meimei的成绩
- 修改成绩
score["han meimei"] = 90 # 就会修改han meimei的成绩为90
- 添加学生-成绩
score["zhang san"] = 88 # 就会把zhang san的成绩是88放进我们的score字典
- 删除学生-成绩
del score["zhang san"] # 就会把zhang san和他的成绩从我们的score字典里面删除
# 与del相对应的还有
score.pop("zhang san") # 删除并返回他的成绩
score.popitem() # 删除任意一对值,并返回(key, value) pair
- 查看所有学生姓名/成绩/姓名-成绩
score.keys()
score.values()
score.items()
- 其他:创建空字典的两种方式:
adict = {}
adict = dict()
6. 集合Set
set是无序,无重复的元素集合,不一定要同一类型。
- 新建集合:
s = { 1, ’c’, (2.5, ’b’) } # 可以看到这个set有三个不同类型的element
# 或者
s = set("AGATGATT") # s = {’T’, ’A’, ’G’}
- 运算符
7. 其他
7.1 用户输入
input_str = input("Enter a number: ")
input_int = int(input_str)
7.2 lambda expression
[1/x for x in range(1,6)]
[1.0, 0.5, 0.3333333, 0.25, 0.2]
7.3 异常Exception(又称报错)
当我们代码出现错误的时候,python会给我们提供错误信息/种类。所以会阅读错误信息也是很中啊哟的,以下是几种常见报错:
TypeError, ValueError
: 错误的类型/数据NameError, UnboundLocalError, AttributeError
: 变量名未定义IndexError
: 序列index不在范围内KeyError
: 字典里没有这个keyZeroDivisionError
: 除以零- 等等
那我们该如何handle exception呢:
try:
# 尝试做什么
except ExceptionName1:
# 如果报了ExceptionName1这个错,我们做什么
except ExceptionName2:
# 如果报了ExceptionName2这个错,我们做什么