引言
本篇将介绍我在学习有关
Python
时的一些笔记分享。
所用教学平台:MOOC
所用IDE:Jupyter Notebok
Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
自动补全
# Jupyter Notebook 首单元添加:
%config IPComplete.greddy=True
基础操作
print("Hello Python...")
# print 默认换行,若不需要换行,则:
print("Hello", end="")
print("Python...")
# 或
print("Hello", " Python...")
变量与基本数据类型
# Python 无需手动指定数据类型,会根据给定值进行自动指定
int_a = 5
float_b = 6.3
str_c = "Hello"
print(int_a, float_b, str_c)
print(int_a, type(int_a))
print(float_b, type(float_b))
print(str_c, type(str_c))
# 复数
complex_a = 1 + 2j # 实部 + 虚部
complex_b = complex(3.14, 5.12) # complex(实部, 虚部)
print(complex_a, type(complex_a))
print(complex_b, type(complex_b))
# 布尔
bool_T = True
bool_F = False
print(bool_T, type(bool_T))
print(bool_F, type(bool_F))
# 逻辑运算
# and,or,not - 与,或,非
print(True or False)
print(False and False)
not False == True #do not use ! to refrence not
15 == True
保留字
and
exec
not
assert
finally
or
break
for
pass
class
from
print
continue
global
raise
def
if
return
del
import
try
elif
in
while
else
is
with
except
lambda
yield
转义
# 转义字符是“\”
print("This is the first line...\nThis is the second line...")
# 若不想让转义符生效,则可在字符串前添加“r”,表示原始字符串
print(r"This is the fitst lint...\nThis is the second line...")
输出段落
三个连续单引号或双引号进行标识
print('''Hello World
Hello Python
Hello Anaconda''')
字符串操作
# 字符串拼接
"Hello" + " String"
# 输出 20 次 Hello
"Hello " * 20
列表
list1 = [1,2,3,4]
print(list1)
print(list1[1])
print(list1[-1]) # 从右向左输出第一个元素(倒序输出)
# 列表截取/切片
list2 = [1,2,3,4,5,6]
print(list2[0:3]) # 不包含尾/结束下标的元素,即4
print(list2[-3:-1]) # 不包含倒数第一个下标元素,即6
# 切片步长
list3 = [1,2,3,4,5,6]
print(list3[::2]) # 不限制起点与终点下标,每隔2个步长进行打印
print(list3[1::2]) # 从起点下标1开始,每隔2个步长进行打印
元组(Tuple)
元组与列表类似,但元组
一旦定义即不能对数据进行修改
。元组写在小括号里,元素之间用逗号隔开。
元组中元素的类型可以不相同,与列表类似。也支持嵌套。
tuple1 = (1,2,3,4,5,"Hello World",[6,7,8,9],(10,11))
print(tuple1,type(tuple1))
print(tuple1[0])
print(tuple1[-1])
print(tuple1[5:-1])
print(tuple1[-1][-1])
集合(Set)
集合是一个无序的、且不含重复元素的序列
集合主要用来进行成员关系测试和删除重复元素
可以使用大括号{}或set()函数创建集合
自动去重
set1 = {1,2,2,3,3,1}
print(set1)
print(1 in set1) # 判断1是否存在于set1集合中,存在返回True,否则返回Flase
print(5 in set1)
set2 = {1,2,3,4}
set3 = {4,5,6}
集合操作
# 集合的并
print(set2 | set3)
# 集合的交
print(set2 & set3)
# 集合的差
print(set2 - set3)
# 集合的补,在两个集合中不同时存在的元素集合
print(set2 ^ set3)
# 等同于 == (集合的并 - 集合的补)
print((set2 | set3) - (set2 & set3))
字典(Dict)
字典是一种映射,用{}标识,是一个无序的键(key)值(value)对的集合,键必须使用不可变的类型
在同一个字典中,键的值是唯一的
在字典中的元素都是通过键来存取
dict1 = {"name" : "zhangsan","height" : 175, "weight" : 72}
print(dict1["height"]) # 通过键取值
dict1["weight"] = 73 # 修改字典数据。若字典中无该数据,则新增;反之覆盖.
print(dict1)
# 内置函数: clear(), keys(), values()
print(dict1.keys()) # 输出键
print(dict1.values()) # 输出值
print(dict1.clear()) # 清空字典
dict2 = {} # 构建空字典
Print 格式化输出
%c
格式化字符及其ASCII码%s
格式化字符串%d
格式化整数%u
格式化无符号整型%o
格式化无符号八进制数%x
格式化无符号十六进制数%X
格式化无符号十六进制数(大写)%f
格式化浮点数字,可指定小数点后的精度%e
用科学计数法格式化浮点数%E
作用同 %e,用科学计数法格式化浮点数%g
%f 和 %e 的简写%G
%f 和 %E 的简写
# `%c` 格式化字符及其ASCII码
print("%c" % "A")
print("%c" % 65)
# `%s` 格式化字符串
print("%s" % "Hello World")
# `%d` 格式化整数
print("%d" % 10)
# `%o` 格式化无符号八进制数
print("%o" % 10)
print("%#o" % 10)
# `%x` 格式化无符号十六进制数
print("%x" % 20)
print("%#x" % 20)
print("%X" % 20)
# `%f` 格式化浮点数字,可指定小数点后的精度
print("%f" % 3.14)
# `%e` 用科学计数法格式化浮点数
# `%E` 作用同 %e,用科学计数法格式化浮点数
print("%e" % 31400000)
# `%g` %f 和 %e 的简写
# `%G` %f 和 %E 的简写
print("%g" % 3140000)
print("%g" % 31400000955)
类型转换
strNum = "1"
print(int(strNum))
strFloat = "3.14159"
print(float(strFloat))
print(str(456))
print(ord("A")) # 转换ASII码
print(chr(65)) # 识别ASII码对应的值
print(chr(9999))
tuple1 = (1,2,3,4,5,5,6,6)
print(tuple1)
list1 = list(tuple1) # 元组转list
print(list1)
set1 = set(list1) # list转集合(可起到去重的作用)
print(set1)
tuple2 = (("name","zhangsan"),("height",172))
print(tuple2)
dict1 = dict(tuple2) # 元组转字典(当元组以键值对的形式存储时,可杯解析成字典)
print(dict1)
超级表达式
# 方程式计算(超级表达式计算)
x = 8
calc = "5*x+1"
print(eval(calc))
条件(if)控制
# 流程控制
print("Please input your weight(kg)")
weight = float(input()) # input() - 接收用户输入数据
print("Please input your height(M)")
height = float(input())
# if weight > 90:
# print(weight)
# if else
# if weight > 90:
# print(weight)
# else:
# print("Bye")
# if else if
BMI = weight / height**2
if BMI < 20:
print("Your BMI is %.2f, To thin" %BMI)
elif BMI > 25:
print("Your BMI is %.2f, To fat" %BMI)
else:
print("Your BMI is %.2f, Well Done" %BMI)
条件(while)控制
# 流程控制
i = 0
while i < 5:
print("Hello World")
i += 1
条件(for)控制
# 流程控制
# 遍历列表
fruits = ['banana', 'apple','mango']
for fruit in fruits:
print('Current:',fruit)
print("----------")
# for range
for i in range(10):
print("Hello World")
列表推导式
list1 = [1,2,3]
list2 = [3,4,5]
# 此处为双层循环
# 分别从list1中取出1,2,3,并与ist2的值进行相乘(类似笛卡尔乘积?)
[x * y for x in list1 for y in list2]
# 数值判断的使用场景,从list1中取出大于1小于4的x值的值
[x for x in list1 if 1 < x < 4]
多重循环
# 流程控制
# 多重循环
# 九九乘法表
for i in range(1,10):
for j in range(1, i+1):
result = j * i;
print("%s x %s = %-5s" % (j, i , result),end='')
print() # 每次循环结束后换行
Break
# 流程控制
# 提前结束整个循环
i = 0
while i < 10:
i += 1
if i == 3:
print("i == 3")
break
print("Next")
print("End")
Continue
# 流程控制
# 跳过当前循环中剩余语句,进入下一循环
i = 0
while i < 10:
i += 1
if i == 3:
print("i == 3")
continue
print("Next")
print("End")
Pass
# 流程控制
# pass
# 占位,不起实际作用
i = 0
while i < 10:
i += 1
if i == 3:
pass # pass起到空语句的作用
elif i == 5:
print("i == 5")
print("Next")
print("End")
函数
定义
'''
def functinoName(parameters):
"函数帮助信息"
functino_suite # 函数体
return [expression] # 返回值
'''
# Python的函数无需定义返回值类型
# 此处定一个求阶乘!的函数
def fact(n):
"basic_use"
result = 1
for i in range(1, n+1):
result *= i
return result
# 调用上述fact函数
result = fact(5)
print(result)
# 打印函数帮助信息
fact.__doc__
函数返回多个值(即返回一个元组)
def fun_test(mList,mint=0,mString="Default String"):
mList.append("New Item")
mint += 1
return mList, mint, mString
mTestList = [1,2,3]
mTestInt = 10
print(fun_test(mTestList,mTestInt))
print(mTestList)
print("----------")
# 对返回的元组进行拆包,取出相应值
returnV1, rerutnV2, returnV3 = fun_test(mTestList,mTestInt)
print(returnV1)
print(rerutnV2)
print(returnV3)
局部/全局变量
number = 123
def fun():
number = 321
print(number)
fun()
print(number)
number = 456
def funGlobal():
global number # global 局部变量全局化,以达修改全局变量
number = 654
print(number)
funGlobal()
print(number)
类
定义
# 类
'''
class className:
'类帮助信息' # 类文档
class_suite # 类体
'''
# object 表示mFirstClass继承自object类
class mFirstClass(object):
'这是mFirstClass类的帮助文档'
# classCount是类的一个属性,值在类中共享,可使用mFirstClass.classCount进行访问
# 即共有属性
classCount = 0
# self表示类的实例,self在定义类方法时是必要的,但在调用时为不必传入的参数
# __init__为类的构造函数
def __init__(self,name,schoolName):
self.name = name
self.schoolName = schoolName
mFirstClass.classCount += 1
def getName(self):
return self.name
def getSchoolName(self):
return self.schoolName
def showCount(self):
print("Total count % s" % (mFirstClass.classCount))
def showMassage(self):
print("Name: %s, School: %s" % (self.name,self.schoolName))
类帮助文档
# 类帮助文档的使用
print(mFirstClass.__doc__)
实例化
# 类的实例化
mClass1 = mFirstClass("name1","school1")
mClass2 = mFirstClass("name2","school2")
类属性
# 访问类的属性
print(mFirstClass.classCount)
类方法
# 调用类方法
mClass1.showCount()
mClass2.showCount()
mClass1.showMassage()
mClass2.showMassage()
获取类帮助信息
# Python 获取帮助信息
# dir(instance)
# 可调用dir来显示对象的所有方法
dir(mClass1)
文件处理
写
# Python 文件操作
# 文件写入
# 第一个参数为待写入文件的地址,若文件存在即写入文件,不存在则新建文件后写入
# "wt"为写入模式,write type
with open ("testFiles/test.txt", "wt") as out_file:
out_file.write("This is a new text")
读
# Python 文件操作
# 文件读取
# 第一个参数为读取文件地址,若文件存在即读取文件内容,若文件不存在则报错
# "rt"为读取模式,read type
# 调用read方法对文件进行读取
with open("testFiles/test.txt", "rt") as in_file:
text = in_file.read()
print(text)
异常
# 异常
# try catch在Python中为try except
def except_funtion():
try:
# 1.故意产生异常
10 / 0
# 2.正常操作
# 10 / 1
except ZeroDivisionError:
# Python有许多异常,但无法一一进行处理,若可以预先判定异常则最好,或使用通用异常反馈结果
print("Zero Division Error")
except :
# 通用异常反馈
print("System Error")
else:
# 正常情况
print("System all green")
pass
finally:
# 无论是否发生异常都会执行finally中的代码
print("We got finally")
except_function()
帮助
dir
调用dir()来显示该对象的所有方法
dir(1)
help
调用help()来查看该对象的详细信息
help(int)