Python学习笔记
Python两种编程方式
- 交互式:对每个输入语句及时运行结果,适合语法练习
- 文件式:批量性hi性一组语句并运行结果,是编程的主要方式
Windows开发环境配置
- 解释器下载地址:IDLE,安装教程
- 编辑器Pycharm:下载地址,安装教程,注册码
- 使用实例---温度转换
- 代码
TempStr = input("请输入带有符号的温度值:") if TempStr[-1] in ['F','f']: C = (eval(TempStr[0:-1]) - 32)/1.8 print("转换后的温度是{:.2f}C".format(C)) elif TempStr[-1] in ['C','c']: F = 1.8 * eval(TempStr[0:-1]) + 32 print("转换后的温度是{:.2f}F".format(F)) else: print("输入格式错误")
- 运行
- IDLE中点击
Run
--Run modules
- Pycharm中
- IDLE中点击
- 代码
语法元素
- 缩进:表达程序的格式框架
- 缩进是语法的一部分,缩进不正确程序运行错误
- 是表达代码间包含和层次关系的唯一手段
- 程序内一致即可,一般用4个空格或1个Tab键
- 注释
#
:单行注释```内容```
:多行注释
- 变量:保存和表示数据的占位符号
- 命名规则
- 大小写字母、数字、下划线和汉字等字符及组合
- 首字符不是数字
- 不能与保留字符相同
- 大小写敏感
=
:为变量赋值
- 命名规则
- 数据类型
- 数字类型
- 整数:38、1
- 浮点数:数学中的实数,带有小数部分
- 字符串类型:由0个或多个字符组成的有序字符序列
- 由一对单引号或一对双引号吧表示,如"100,10,100"
- 字符串序号
- 分为正向递增序号和反向递减序号
- 分为正向递增序号和反向递减序号
- 使用
[]
获取字符串中一个或多个字符- 索引:返回字符串中第m个字符,
<字符串>[M]
,如TemStr[-1] - 切片:返回字符串中从M开始不到N的这样一段字符子串,
<字符串>[M:N]
,如TemStr[0:-1]
- 索引:返回字符串中第m个字符,
- 列表类型:由0个或多个数据组成的有序序列
- 使用
[]
表示,中间由,
分隔元素,如['F','f']
- 使用
in
判断一个元素是否在列表中
- 使用
- 数字类型
- 语句与函数
- 赋值语句:用
=
来实现为变量赋值 - 分支语句
- 由
if
、elif
、else
构成 - 每个分支语句最后都有一个
:
:如果条件为真则执行冒号后语句
- 由
- 函数:函数名()
- 输入函数:
input()
,获得用户输入的信息,其中的中文只是提示信息不作为输入部分 - 输出函数:
print()
- 输出格式化
- 输出格式化
- 评估函数:
eval()
,去掉参数最外侧引号并执行余下语句
- 输入函数:
- 赋值语句:用
Python基本图形绘制
turtle库
- 是turtle绘图体系的Python实现,Python语言的标准库之一
- 原理:即海龟在画布上走过的轨迹形成了绘制的图形
- 库引用:
imprt turtle
- 使用函数:
库名.函数(函数参数)
turtle绘图窗体
- 窗口最小单位是像素
- 函数:
turtle.setup(width,height,startx,starty)
设置窗体大小及位置(不是必需的,其中的startx与starty是窗体左上角距屏幕左上角的位置)
turtle坐标体系
- 空间坐标:
turtle.goto(x,y)
绝对坐标
- 海龟坐标
- 前进:
turtle.fd(d)
- 后退:
turtle.bk(d)
- 以左侧某一点为圆心:
turtle.circle(r半径,angle弧度)
- 前进:
- 角度坐标
turtle.seth(angle角度)
改变海龟行进方向
- 海龟角度
- 向左行进方向:
turtle.left(angle)
- 向右行进方向:
turtle.right(angle)
- 向左行进方向:
色彩体系
- 采用RGB色彩模式
- RGB每色取值范围0-255整数或0-1小数
- 常用RGB色彩
turtle.colormode(mode)
默认为小数值- 1.0:RGB小数值模式
- 255:RGB整数值模式
画笔控制
- 成对出现
turtle.penup()
:抬起画笔,海龟运行轨迹不在画布上形成图案turtle.pendown()
:落下画笔,海龟爬行turtle.pensize(width)
或者turtle.width(wodth)
:画笔宽度,海龟的腰围turtle.pencolor(color)
:画笔颜色,color为颜色字符串或者rgb值
运动控制函数
- 控制海龟行进:走直线&走曲线
- 走直线:
turtle.fd(d)
或者turtle.forward(d)
向前行进 - 走曲线:
turtle.circle(r半径,extent弧度)
,r默认圆心在海龟左侧r距离的位置
循环语句
- 按照一定次数循环执行一组语句
- 格式
for 变量 in range(函数名): 被循环执行的语句
range()
函数range(N)
:0~N-1range(M,N)
:M~N-1range(M,N,K)
:M~N-1且以K为步长
实例分析
- 绘制蟒蛇代码
import turtle turtle.setup(650, 350, 200, 200) # 设置窗体大小 turtle.penup() # 抬起画笔 turtle.fd(-250) # 倒退 turtle.pendown() # 落下画笔开始画 turtle.pensize(25) # 设置画笔大小 turtle.pencolor("purple") # 设置画笔颜色 turtle.seth(-40) # 设置行进方向 for i in range(4): # 循环四次完成身子部分 turtle.circle(40, 80) # 先以40为半径画80度的圆 turtle.circle(-40, 80) # 再以方向的40为半径画80度的圆 turtle.circle(40, 80 / 2) # 以40为半径、40度的圆 turtle.fd(40) # 行进40度 完成脖子部分 turtle.circle(16, 180) # 以16为半径、180度的圆 turtle.fd(40 * 2 / 3) # 行进 完成头部 turtle.done() # 需要自行操作才能关闭窗体
- 运行截图
基本数据类型
数字类型
- 整数类型
- 与数学中的整数一致,可正可负,没有取值范围限制
pow(x,y)
函数:计算xy,想算多大算多大- 四种进制表示形式
- 浮点数类型
- 带有小数点及小数的数字,取值范围:
-10^308~10^308
,精度数量级:10^-16
- 运算存在不确定尾数,不是bug
round(x,d)
函数:对x四舍五入,d为小数截取位数,浮点数间运算及比较用round()
函数辅助- 浮点数的科学计数法
- 使用
e
或E
作为幂的符号,以10为基数 <a>e<b>
:a*10b
- 使用
- 带有小数点及小数的数字,取值范围:
- 复数类型
a+bj
:a为实部,b为虚部,j=√-1
数值运算操作符
-
操作符
操作符及使用 描述 x+y 加,x与y之和 x-y 减,x与y之差 x*y 乘,x与y之积 x/y 除,x与y之商 x//y 整数除,x与y之整数商 +x x本身 -y x的负值 x%y 余数 x**y 幂运算,x的y次幂 x**y 当y是小数时,开方运算 -
一些运算函数
abs(x)
:x的绝对值divmod(x,y)
:商余,同时输出商和余数(x//y,x%y)
pow(x,y)
:幂运算pow(x,y,z)
:幂余,(x**y)%zround(x,d)
:对x取d位小数max(x1,...,xn)
min(x1,...,xn)
int(x)
:将x变为整数float(x)
:将x变为浮点数complex(x)
:将x变为复数
-
实例
- 工作日模式每天努力到多少相当于365天模式每天1%的努力
- 代码
def dayUp(df): dayup = 1 for i in range(365): if i % 7 in [6,0]: dayup = dayup * (1-0.01) else: dayup = dayup * (1+df) return dayup dayfactor = 0.01 while dayUp(dayfactor) < 37.78: dayfactor +=0.001 print("工作日的努力参数是:{:.3f}".format(dayfactor))
- 结果:0.019
字符串类型
-
表示方法
-
序号
-
切片使用
-
转义符
\
-
字符串操作符
-
一些处理函数
len(x)
:返回字符串x的长度str(x)
:任意类型x多对应的字符串形式hex(x)
:整数x的十六进制小写形式字符串oct(x)
:整数x的八进制小写形式字符串chr(u)
:将Unicode编码返回对应字符串ord(x)
:返回x对应的Unicode编码
-
一些处理方法
方法及使用 描述 str.lower()或str.upper() 返回字符串的小写或大写形式 str.split(sep=None) 返回一个列表,由str根据sep被分隔的部分组成 str.count(sub) 返回子串sub在str中出现的次数 str.replace(old,new) 所有old字串被替换为new str.center(width[,fillchar]) 字符串str根据宽度width居中,fillchar可选其为填充字符 str.strip(chars) 从str中去掉其左侧和右侧chars中列出的字符 str.join(iter) 在iter变量除最后元素外每个元素后增加一个str -
字符串的格式化
- 使用
.format()
方法 - 槽
{ }
- 使用
Python处理时间
time库
- 计算机时间的表达
- 提供获取系统时间并格式化输出功能
- 提供系统级精确计时功能,用于程序性能分析
- 导入库:
import time
- 调用相关函数:
time.b()
三类函数
- 时间获取:
time()
:获取当前时间戳,即计算机内部时间值,是一个浮点数ctime()
:获取当前时间并以可读方式表示,返回字符串gmtime()
:表示为计算机可处理的时间格式
- 时间格式化:
strftime(tpl,ts)
:tpl定义输出效果,ts为时间类型变量strptime(str,tpl)
:str是字符串形式的时间值,tpl为定义的输出效果
- 程序计时应用
perf_counter()
:返回一个CPU级别的精确时间计数值,单位为秒sleep(s)
:s为休眠的时间,单位是秒,可以是浮点数
- 实例
- 文本进度条:采用字符串方式打印可以动态变化的文本进度条,进度条需要能在一行中逐渐变化
- 代码
import time scale = 50 print("执行开始".center(scale//2,"-")) start = time.perf_counter() for i in range(scale+1): a = '*' * i # *显示的个数 b = '.' * (scale - i) # .显示的个数 c = (i/scale)*100 # 打印百分比 dur = time.perf_counter() - start # 打印出所消耗时间 print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end="") time.sleep(0.1) print("\n"+"执行结束".center(scale//2,'-'))
- 效果
程序的控制结构
分支结构
- 单分支:
if 条件:
- 二分支:
if :
else:
- 多分支:
if - elif - else
- 异常处理
try: 语句1 except: 语句2
try: 语句1 except: 语句2 else: # 不发生异常时执行 语句3 finally: # 一定执行 语句4
- 实例
- 身体质量指数BMI:BMI=体重(kg)/身高^2(m2)
- 代码
height,weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开]:")) bmi = weight / pow(height,2) print("BMI数值为:{:.2f}".format(bmi)) who,nat = "","" if bmi < 18.5: who,nat = "偏瘦","偏瘦" elif 18.5 <= bmi < 24: who,nat = "正常","正常" elif 24 <= bmi < 25: who,nat = "正常","偏胖" elif 25 <= bmi < 28: who,nat = "偏胖","偏胖" elif 28 <= bmi <30: who,nat = "偏胖","肥胖" else: who,nat = "肥胖","肥胖" print("BMI指标为:国际'{0}',国内'{1}'".format(who,nat))
- 身体质量指数BMI:BMI=体重(kg)/身高^2(m2)
循环结构
- 遍历循环
for <循环变量> in <遍历结构>: 语句块
- 计数循环:
for i in range(N):
- 列表遍历循环:
for item in ls:
,ls
为一个列表 - 文件遍历循环:
for line in fi:
,fi
为文件标识符,遍历其每行,产生循环
- 计数循环:
- 无限循环
while <条件>: <语句块>
循环控制保留字
- continue:结束当次循环
- break:结束整个循环
Python使用随机数
random库
- 导入:
import random
- 八个函数
- 基本随机函数
seed(a)
:初始化给定的随机数种子,默认为系统当前时间random()
:生成[0.0-1.0]之间的随机小数
- 扩展随机函数
randint(a,b)
:生成一个[a,b]之间的整数randrange(m,n,k)
:生成一个[m,n)之间以k为步长的随机整数getrangbits(k)
:生成一个k比特长的随机整数uniform(a,b)
:生成[a,b]之间的随机小数choice(seq)
:从序列seq中随机选择一个元素shuffle(seq)
:将序列seq中元素随机排列,返回打乱后的序列
- 基本随机函数