Python基础知识笔记(持续更新内容)
python程序实例解析
- 2.1温度转换
- 2.2Python程序语法元素分析
- 2.3 python蟒蛇绘制
-
- 引用函数库方式
- 2.4 turtle库语法元素分析
-
- 2.4.1 绘图坐标体系
- 2.4.2 画笔控制函数
- 2.4.3 形状绘制函数
- 2.4.4 遍历循环for-in
- 3.1数字类型
-
- 3.1.2 整数类型
- 3.1.3 浮点型类型
- 3.1.4 复数类型
- 3.2 数字类型的操作
-
- 3.2.1 内置的数值运算操作符
- 3.2.2 内置的数值运算函数
- 3.2.3 内置的数字类型转换函数
- 3.3 模块1:math库的使用(需import引用该库)
-
- 3.3.2 math库解析
- 3.4 实例天天向上
- 3.5 字符串类型及其操作
-
- 3.5.1字符串类型的表示
- 3.5.2 基本的字符串操作符
- 3.5.3 内置的字符串处理函数
-
- 内置的字符串处理函数 6个
- 恺撒密码
- 3.5.4 内置的字符串处理方法
-
- 常用的16个内置字符串处理方法(全部共43个)
- 3.6 字符串类型的格式化
-
- 3.6.1 format()方法的基本使用
- 3.6.2 format()方法的格式控制
- 3.7 实例4: 文本进度条
-
- 实例:带刷新的文本进度条
2.1温度转换
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("输入格式错误")
2.2Python程序语法元素分析
2.2.3命名字与保留字
Python 语言允许采用大写字母、小写字母、数字、
组合给变量命名,但名字的首字符不能是数字,中间不空格,长度无限制。
注意:标识符,保留字对大小写敏感:python3中可以采用中文等非英语语言字符对变量命名
33个保留字列表
2.2.4字符串
字符串包括:正向递增系列和反向递减系列
- 正向递增系列以最左侧字符序号为0 向右依次递增,最右侧序号为 L-1
- 反向递减系列以最右侧字符序号为 -L 向左依次递减,最左侧序号为 -L
- 字符串区间访问方式,[N:M]格式,表示字符串中从N到M (不包含M) 的子字符串
例:s[-1]表示字符串s最后一个字符串;s[0:-1]表示从0到最后一个字符串 (不包含最后一个字符)
2.2.5赋值语句
- = 表示赋值,右值赋值左变量
- 同步复制语句
,…, = ,…,
首先运行表达式N,并赋值给变量N
好处: 互换变量 不需要中间值,如:x,y=y,x
2.2.6 input函数 输入函数
input()函数从控制台获得用户输入,并输出带提示性文字
无论用户输出字符还是数字,input()统一以字符串型输出
2.2.7分支语句 if-elif-else
类型: if-elif-else
例:
if s[-1] in ['F','f''] :elif :else:
列表: [元素1, ... ,元素n]
2.2.8 eval()函数 去掉最外层引号
例如:
>>>s="102C">>>eval(s[0:-1])102
输入"‘hello’"时,eval()去掉最外层引号后.结果为字符串’hello’
输入数字运算时,可搭配input()使用
>>>s=eval(input("请输入一个数字: "))请输入一个数字: 10024.256>>>print(s*2)2048.512
2.2.9 print() 输出函数
纯信息输出时 print()
格式化输出时 print()函数用槽格式,通过format()函数将输出变量格式化输出
>>>c=10>>>print("转换后温度为{:.2f}C".format(c))转换后温度为10.00C
2.2.10 循环语句 while
TempStr = input("请输入带有符号的温度值: ")while TempStr[-1] not in ['N','n']: 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("输入格式错误") TempStr = input("请输入带有符号的温度值: ")
2.2.11 函数定义 def temp():
定义一个 temp(ch)函数
def temp(ch):c=ch+2retun c
主函数写法if __name__ == '__main__':
2.3 python蟒蛇绘制
import turtleturtle.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) turtle.circle(-40, 80)turtle.circle(40, 80/2)turtle.fd(40)turtle.circle(16, 180)turtle.fd(40 * 2/3)
引用函数库方式
- import
- form import
form import * (其中* 是通配符,表示所有函数) - import as
例如:
import turtle as t
使用函数式则可以 t.fd()格式引用
2.4 turtle库语法元素分析
2.4.1 绘图坐标体系
- 初始时,小海龟位于 画布正中央,此处坐标(0,0),行进方向为 水平右方
- turtle绘图体系 绝对方位的0度为 画布正右方
- turtle坐标系的 原点默认在屏幕左上角
- 画布设置
turtle.setup(width,height,startx,starty)
作用:设置主窗体的大小位置
参数:
width:窗口宽度 ,若值是整数,表示像素值;若值是小数,表示窗口宽度与屏幕的比例。
height:窗口高度,若值是整数,表示像素值;若值是小数,表示窗口高度与屏幕的比例。
startx:窗口左侧与屏幕左侧的像素距离,如果值是None,窗口位于屏幕水平中央。
starty:窗口顶部与屏幕顶部的像素距离,如果值是None,窗口位于屏幕垂直中央。
2.4.2 画笔控制函数
-
turtle.penup()
别名: turtle.pu() , turtle up()
作用:抬起画笔,之后移动不绘制形状 -
turtle.pendown()
别名:turtle.pd() ,turtle.down()
作用:落下画笔,运动会绘制形状(与turtle.penup()一组) -
turtle.pensize(width)
别名: turtle.width()
作用:设置画笔尺寸
参数:width画笔的宽度,如果为None或空,则返回当前画笔宽度 -
turtle.pencoclor(colorstring)或turtle.pencolor((r,g,b))
作用:设置画笔颜色,无参数时返回当前画笔颜色
参数:colorstring 表示颜色字符串,如"purple",“red”,“blue”
(r,g,b)颜色对应的RGB数值,如(51,204,140)
2.4.3 形状绘制函数
-
turtle.forward(d)
别名:turtle.fd(d)
作用:向当前行进方向前进 d距离
参数:d行进距离的像素值,当值为负数时,向相反方向前进 -
turtle.bk(d)
作用:向海龟 负方向移动 d距离 (海龟方向不改变) -
turtle.setheading(angle)
别名:turtle.seth(angle)
作用:设置海龟当前前进方向angle,该角度为绝对方向角度
参数:angle行进方向的绝对角度的整数值 -
turtle.left(angle)
作用:海龟向左转
参数:angle在海龟当前行进方向上旋转的角度 -
. turtle.right(angle)
作用:海龟向右转
参数:angle在海龟当前行进方向上旋转的角度 -
turtle.circle(r,extent=None)
作用:根据半径r绘制extent角度的弧形
参数:r半径,当值为正数时,半径在海龟左侧:但值为负数时,半径在海龟右侧.
extent,绘制弧形的角度,但不设参数或设置为None时,绘制整个圆 -
turtle.done()
作用:绘图完后手动退出,若不加,则程序完成就自动退出(一般都在绘图程序后加此函数)
2.4.4 遍历循环for-in
格式:
for i in range():range(n) 产生0至n-1的整数系列,共循环n次range(n,m)产生n至m-1的整数系列,共循环m-n次
3.1数字类型
3.1.2 整数类型
整数类型包括:十进制、二进制、八进制、十六进制
- 十进制:默认采用
- 二进制:以 0b或0B 引导,由0和1组成,例如0b101
- 八进制:以 0o或0O 引导,由0到7组成例如0o711
- 十六进制:以 0x或0X 引导,由0到9,a到f,A到F组成.例如0xABC
pow(x,y),计算x^y (x的y次方)
3.1.3 浮点型类型
表示方法:十进制和科学计数法
科学计数法:以字母e或E 作为幂的符号,以10为基数,e=a*10^b
例如:4.3e-3=0.0043
3.1.4 复数类型
复数的虚部以后缀 “j"或"J” 表示
其实部与虚部的数值都是浮点数
z.real 获取z的实部
z.imag或缺z的虚部
3.2 数字类型的操作
3.2.1 内置的数值运算操作符
3种数字类型的扩展关系: 整数->浮点数->复数
不同数字类型间运算所生成结果是"更宽"的类型
例如:整数浮点数与分数运算,结果为分数
3.2.2 内置的数值运算函数
函数 | 描述 |
---|---|
abs(x) | x的绝对值,例如`>>>abs(-3+4j) 结果为5.0 |
divmod(x,y) | (x//y,x%y) ,输出为二元组形式(元组类型) |
pow(x,y[z]) | (xy)%z,[…]表示该参数可以省略,即pow(x,y),等价于xy |
round(x[,d]) | 对x四舍五入,保留d位小数,round(x)返回四舍五入的整数 |
max(x1,x2,…,xn) | x1,x2,…xn的最大值,n无限定 |
min(x1,x2,…,xn) | x1,x2,…xn的最小值,n无限定 |
3.2.3 内置的数字类型转换函数
函数 | 描述 |
---|---|
int(x) | 将x转换为整数,x可以为浮点数(直接舍弃小数部分,不四舍五入)或字符串 |
float(x) | 返回浮点数x或字符串x对应的整数类型 |
complex(re[,im] | 生成一个复数,re为实部,可以是整数.浮点数或字符串:im为虚部,可以是整数浮点数不能为字符串 |
复数不能直接转换为其他数字类型,可以通过.real和.imag提取实部和虚部,然后分别转换
例如:
>>>float((10+99j).imag)99.0
3.3 模块1:math库的使用(需import引用该库)
3.3.2 math库解析
3.4 实例天天向上
【实例代码3.3】天天向上。
一年365天,如果好好学习时能力值相比前一天提高1%,当放任时相比前一中国人 天下降1%。效果相差多少呢?
此时,天天向上的力量是(1+0.01)365,相反的力量是(1-0.01)365。从0.001、0.005到0.01,这个每天努力的因素根据需求的不同而不断变化,因此,新代码中采用dayfactor变量表示这个值。这种改变的好处是每次只需要修改这个变量值即可,而不需要修改后续与该变量相关位置的代码。代码如下:
import mathdayfactor = 0.01dayup = math.pow((1.0 + dayfactor), 365) # 提高dayfactordaydown = math.pow((1.0 - dayfactor), 365) # 放任dayfactorprint("向上: {:.2f}, 向下: {:.2f}.".format(dayup, daydown))
【实例代码3.5】天天向上。
每周工作5天,休息2天,休息日水平下降0.01,工作日要努力到什么程度,一年后的水平才与每天努力1%取得的效果一样呢?
代码如下:
#e3.5DayDayUp365.pydef dayUP(df): dayup = 1.0 for i in range(365): if i % 7 in [6, 0]: dayup = dayup * (1 - 0.01) else: dayup = dayup * (1 + df) return dayupdayfactor = 0.01while (dayUP(dayfactor)<37.78): dayfactor += 0.001print("每天的努力参数是: %.3f."%dayfactor)
3.5 字符串类型及其操作
3.5.1字符串类型的表示
- 单引号字符串:'单引号表示,可以使用双引号"作为字符串一部分
- 双引号字符串:"双引号表示,可以使用单引号’作为字符串一部分
- 三引号字符串:’’‘三引号表示,可以使用’单引号’
“双引号”
也可以换行
‘’’
3.5.2 基本的字符串操作符
- 5个字符串的基本操作符
操作符 | 描述 |
---|---|
x+y | 连接两个字符串x和y |
x*n或n*x | 复制n次字符串x |
x in s | 如果x是s的子串,返回True,否则返回False |
str[i[ | 索引,返回第i个字符串 |
str[N:M] | 切片,返回索引第N到第M-1的子串 |
- 格式化控制字符 (\ 转义符)
字符 | 含义 |
---|---|
\n | 换行 |
\\ | 表示反斜杠\ |
\’ | 表示单引号’ |
\" | 表示双引号" |
\t | 水平制表(Tab) |
\a | 蜂鸣,响铃 |
\b | 回退,向后退一格 (py文件下) |
\f | 换页 |
\n | 换行,光标移动到下行首行 |
\r | 回车,光标移动到本行首行(py文件下) |
\v | 垂直制表 |
\0 | NULL,什么都不做 |
3.5.3 内置的字符串处理函数
python3以Unicode字符为计数基础,字符串中英文字符和中文字符都是一个长度单位
内置的字符串处理函数 6个
函数 | 描述 |
---|---|
len(x) | 返回字符串x的长度,也可以返回其他组合数据类型元素个数 |
str(x) | 返回任意类型x对应的字符串形式 |
chr(x) | 返回Unicode编码x对应的单字符 |
ord(x) | 返回单字符对应的Unicode编码 |
hex(x) | 返回整数x对应十六进制数的小写形式字符串 |
oct(x) | 返回整数x对应八进制数的小写形式字符串 |
恺撒密码
信息中每一个英文字符循环替换为字母表顺序中该字符后面第三个字符
plaincode = input("请输入明文: ")for p in plaincode: if ord("a") <= ord(p) <= ord("z"): print(chr(ord("a") + (ord(p) - ord("a") + 3)%26),end='') else: print(p, end='')
3.5.4 内置的字符串处理方法
常用的16个内置字符串处理方法(全部共43个)
str为字符串或变量
方法 | 描述 |
---|---|
str.lower() | 返回字符串str的副本,全部字符小写 |
str.upperr() | 返回字符串str的副本,全部字符大写 |
str.islower() | 当str所有字符都是小写时,返回True,否则返回False |
str.isprintable() | 当str所有字符都是可打印的,返回True,否则返回False |
str.isnumeric() | 当str所有字符都是数字时,返回True,否则返回False |
str.isspace() | 当str所有字符为空格时,返回True,否则返回False |
str.endswith(suffix[,start[,end]]) | str[start:end]以suffix结尾返回True,否则返回False |
str.srartswith(prefix[,start[,end]]) | str[start:end]以prefix开始返回True,否则返回False |
str.split(sep=None,maxsplit=-1) | 返回一个列表,由str根据sep被分隔的部分构成,默认分隔符为空格,maxsplit为最大分隔次数,默认maxsplit参数可以不给出 |
str.count(sub[,start[,end]]) | 返回str[start:end]中sub子串出现的次数 |
str.replace(old,new[,count]) | 返回字符串str的副本,所有old子串被替换为new,如果count给出,则前count次old出现被替换 |
str.center(width[,fillchar]) | 字符串居中函数,返回长度为width的字符串,其中str处于新字符串中心位置,两侧增加字符采用fillchar填充,当witdh小于字符串长度时,返回str |
str.strip([chars) | 返回字符串str的副本,在其左右侧去掉chars中列出的字符 |
str.zfill(width) | 返回长度为width的字符串,如果字符串长度不足width,在左侧添加字符“0”,但如果str最左侧是字符”+”或者”-”,则从第二个字符左侧添加”0”,当width小于字符串长度时,返回str。该方法主要用于格式化数字形字符串中 |
str.format() | 返回字符串str的一种排版格式 |
str.join(x) | 返回一个新字符串,由组合数据类型x变量的每一个元素组成,元素间用str分隔 |
3.6 字符串类型的格式化
3.6.1 format()方法的基本使用
格式:.format()
format()中逗号分隔的参数按照 序号关系替换到模板字符串的槽中,槽用{}表示,如果槽中没有序号,则按照顺序替换
如果`需要输出大括号,采用{{{表示,}}表示}
>>>"圆周率{{{1}{2}}}是{0}",format("无理数",3.14,"...")'圆周率{3.14...}是无理数'
3.6.2 format()方法的格式控制
格式如下表:
- format()参数长度比设定值大,则使用参数时间长度:如小于设定值,则默认以空格字符补充
- 指宽度内除参数外用什么表示,默认空格
- 对于整数,输出格式包括一下6种
(1) b: 输出整数的二进制形式
(2) c: 输出整数对应的Unicode字符
(3) d: 输出整数的十进制形式
(4) o: 输出整数的八进制形式
(5) x: 输出整数的小写十六进制方式
(6) X: 输出整数的大写十六进制方式
对于浮点数类型:
(1) e: 输出浮点数对应的小写字母e的指数形式
(2) E: 输出浮点数对应的大写字母E的指数形式
(3) f: 输出浮点数的标准浮点形式
(4) %: 输出浮点数的百分形式
注:输出浮点数尽量 表示小数部分的宽度,更好控制输出格式
3.7 实例4: 文本进度条
- import调用python标准时间库time,使用 time.sleep(t)将当前程序暂时挂起ts t可以是小数
- 注意 默认情况下print()输出结尾自动产生一个’\n’ 换行符
在print()中更换参数end的默认值为’’ ,即每次输出完不换行 - 采用 time.clock()函数 增加运行时间的监控,该函数一般多次出现,第一次调用时计时开始,第二次及后续调用时 返回与第一次的时间差,单位为秒
实例:带刷新的文本进度条
#e4.3TextProgress.pyimport timescale = 50print("执行开始".center(scale//2,'-'))t = time.clock()for i in range(scale+1): a = '*' * i b = '.' * (scale - i) c = (i/scale)*100 t -= time.clock() print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,-t),end='') time.sleep(0.05)print("\n"+"执行结束".center(scale//2,'-'))