引言
本篇将介绍我在学习有关
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
保留字
andexecnotassertfinallyorbreakforpassclassfromprintcontinueglobalraisedefifreturndelimporttryelifinwhileelseiswithexceptlambdayield
转义
# 转义字符是“\”
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)