注释的两种方法:
单行注释以#开头
#Here are the comments
多行注释以'''开头和结尾
赋值操作
可以多赋值
比如交换x,y的值 x,y=y,x
输入函数
Input()函数从控制台获得用户输入
<变量>= input(<提示性文字>)
获得的用户输入以字符串形式保存在<变量>中
表达式
如果val = "28C"
则val[-1]是最后一个字符串"C"
前两个字符组成的子串可以用val[0:2]表示,它表示一个
从[0,2)的区间。
由于约定用户输入的最后一个字符是C或者F,之前是数
字,所以通过val[0:-1]来获取除最后一个字符外的字符串
分支语句
分支语句:控制程序运行,根据判断条件选择程
序执行路径。基本过程如下:
if <条件1成立>:
<表达式组1>
elif <条件2成立>:
<表达式组2>
……
elif <条件N-1成立>:
<表达式组N-1>
else:
<表达式组N>
赋值语句:使用等号给变量赋值
f=1.8*float(input_str[0:-1]) + 32
同步赋值语句:同时给多个变量赋值(先运算右侧N个表
达式,然后同时将表达式结果赋给左侧)
print()函数可以输出各种类型变量的值。
print()函数通过%来选择要输出的变量。
计数循环
基本过程如下
for i in range (<计数值>):
<表达式1>
第一种方式:
import <库名>
例如:import turtle
如果需要用到函数库中函数,需要使用:
<库名>.<函数名>
例>>>import turtle
>>>turtle.fd(100)
第二种方式:
from <库名> import <函数名>
from <库名> import *
调用函数不需要<库名>,直接使用<函数名>
例>>>from turtle import *
>>>fd(100)
Python语言中的类型:
数字类型、字符串类型
元组类型、列表类型
文件类型、字典类型
Python语言包括三种数字类型
整数类型
浮点数类型
复数类型
与数学中的整数概念一致,没有取值范围限制
pow(x, y)函数:计算x^y
整数类型
示例
1010, 99, -217
0x9a, -0X89 (0x, 0X开头表示16进制数)
0b010, -0B101 (0b, 0B开头表示2进制数)
0o123, -0O456 (0o, 0O开头表示8进制数)
浮点数类型有范围,一般为e-308,也可以认为没有范围
示例
0.0, -77., -2.17
96e4, 4.3e-3, 9.6E5 (科学计数法)
复数类型
与数学中的复数概念一致, z = a + bj, a是实数部分,b是虚数部分,a和b都是浮点类型,虚数部分用j或者J标识
示例:
12.3+4j, -5.6+7j
z = 1.23e-4+5.6e+89j(实部和虚部是什么?)
对于复数z , 可以用z.real 获得实数部分,
z.imag获得虚数部分
z.real = 0.000123 z.imag = 5.6e+89
数字类型的关系
三种类型存在一种逐渐"扩展"的关系:
整数-> 浮点数-> 复数
(整数是浮点数特例,浮点数是复数特例)
不同数字类型之间可以进行混合运算,运算后生成结果为最宽类型
123 + 4.0 = 127.0 (整数+ 浮点数= 浮点数)
数字类型的转换
三种类型可以相互转换
函数:int(), float(), complex()
但是不支持直接将一个复数转换为整数或者浮点数,可以将其image或者real函数转换为整数或者浮点数
函数:type(x),返回x的类型,适用于所有类型的判断
x//y 不大于x与y之商的最大整数
x%y x与y之商的余数
x**y x的y次幂
abs(x) x的绝对值
divmod(x,y) (x//y,x%y)
pow(x,y) x的y次幂
字符串类型
字符串是用双引号""或者单引号''括起来的一
个或多个字符。
字符串可以保存在变量中,也可以单独存在。
Python语言转义符: \
输出带有引号的字符串,可以使用转义符
使用\\ 输出带有转移符的字符串
字符串是一个字符序列:字符串最左端位置标记
为0,依次增加。
Python中字符串索引从0开始,一个长度为L的
字符串最后一个字符的位置是L-1
Python同时允许使用负数从字符串右边末尾向
左边进行反向索引,最右侧索引值是-1
可以通过两个索引值确定一个位置范围,返回这
个范围的子串
格式: <string>[<start>:<end>]
start和end都是整数型数值,这个子序列从索引
start开始直到索引end结束,但不包括end位置。
字符串之间可以通过+或*进行连接
加法操作(+)将两个字符串连接成为一个新的
字符串
乘法操作(*)生成一个由其本身字符串重复连接
而成的字符串
字符串处理方法
可以通过for 和in 组成的循环来遍历字符串中
每个字符
格式如下:
for <var> in <string>:
元组类型
元组是包含多个元素的类型,元素之间用逗号分割。
例如:t1 = 123,456, "hello"
元组可以是空的,t2=()
元组包含一个元素时:t3=123,
元组外侧可以使用括号,也可以不使用
元组一旦定义不可改变,安全,想要改变可以用列表类型
列表类型
列表(list)是有序的元素集合;
列表元素可以通过索引访问单个元素;
列表与元组类似
列表中每个元素类型可以不一样
访问列表中元素时采用索引形式
列表与元组不同
列表大小没有限制,可以随时修改
数学库及其使用
math库中常用的数学函数
random库中常用的函数
相同的随机种子,会产生相同的伪随机序列,有利于验证程序执行。
简单条件基本形式
<expr> <relop> <expr>
<relop>是关系操作符<, <=, ==, >=, >, !=
使用=表示赋值语句,使用==表示等于
除数字外,字符或字符串也可以按照字典顺序用于条件比较
<condition>是布尔表达式,为bool类型,布尔值的真和假以字符True和False表示
二分支语法结构如下:
if <condition>:
<statements>
else:
<statements>
多分支决策
异常处理
采用分支结构处理错误
为了不让异常处理代码太多,设计异常机制
Python使用try…except…来进行异常处理,基本格式如下:
当Python解释器遇到一个try语句,它会尝试执行try语句体<body>内的语句
如果没有错误,控制转到try-except后面的语句
如果发生错误,Python解释器会寻找一个符合该错误的异常语句,然后执行处理代码
else和finally非必须项,不过else一定在finally之前,无异常会执行else, finally不管有无异常都会执行(清理工作,如文件不管怎么都需要最后关闭文件,网络上最后要关闭网络)。
运行结果
二次方程中处理
对于二次方程,还会有其他可能的错误,如:输入非数值类型 (NameError),输入无效的表达式(SyntaxError)等。此时可以用一个try语句配多个except来实现。
Python终极解决方案
-使用Python内置的max函数
循环语句
直接用的words列表,是可以增长的、
for循环-缺点
程序开始时必须提供输入数字总数
大规模数字求平均值需要用户先数清楚个数
for循环是需要提供固定循环次数的循环方式
Python提供了另一种循环模式即无限循环,不需要提前知道循环次数,即我们提到的当型循环也叫条件循环
无限循环
语法:while语句
while <condition>:
<body>
while语句中<condition>是布尔表达式
<body>循环体是一条或多条语句
当条件<condition>为真时,循环体重复执行
当条件<condition>为假时,循环终止
在while循环中,条件总是在循环顶部被判断,即在循环体执行之前,这种结构又被称为前测循环
break和continue可以使用
Break 语句- 跳出最内层for/while 循环
<for… else: …> <while… else: …>语句与循环的搭配使用,else:后的表达式在for循环列表遍历完毕后或while 条件语句不满足的情况下执行,有点类似于异常处理
交互式循环
哨兵循环
非字符为哨兵,如空字符串,输入字符串格式,转换
文件循环
假设每行只有一个数字
在这段代码中,循环变量line遍历文件的每一行,将每行都转成数字然后加到sum中。
通过Python的readline()来读取,readline()将文件的一行读取到字符串中。
在文件尾部,readline()返回的一个空字符串可以作为哨兵值。注意空行有换行符
Python中采用readline()方法的end-of-file循环模式:
循环嵌套
假设每行有被逗号分隔的数字
死循环的使用
后测循环实现
break语句也可以用来实现后测循环
布尔操作符
布尔操作符: and,or和 not
布尔运算符and和or用于组合两个布尔表达式,并产生一个布尔结果
<expr> and <expr>
<expr> or <expr>
not运算符是一个一元运算符,计算一个布尔表达式的反
not <expr>
等价于
函数定义
自定义函数:用户自己编写的
系统自带函数: Python内嵌的函数(如abs()、eval())、Python标准库中的函数(如math库中的sqrt())、图形库中的方法(如myPoint.getX())等
函数定义:使用def语句
def <name>(<parameters>):
<body>
形参只在函数内部有效
print()可输出空行
函数返回值
无返回值的return语句等价于return None
使用return语句返回多个值
Python不能用引用改变参数值,但是可以用返回值改变量值
列表中的值是可以改的
函数不能修改变量本身(即amounts)
Python的参数是通过值来传递的
如果变量是可变对象(如列表或者图形对象),返回到调用程序后,该对象会呈现被修改后的状态。
函数和递归
递归阶乘
Python列表有反转的内置方法
方法1:字符串转换为字符列表,反转列表,列表转换回字符串
方法2:递归
通过函数绘制树
turtle库的简单常用指令,请大家练习查询官方提供的turtle使用手册掌握以下命令的用法
forward(distance) #将箭头移到某一指定坐标
left(angel) right(angel)
penup() #提起笔,用于另起一个地方绘制时用,与pendown()配对使用
goto(x,y)
home()
circle(radius)
speed()
多棵树绘制
文件与字典
ord('A')得到字符的ascall码
chr(65)得到字符
s="中文字符串"
bs=s.encode("utf-8")
s=bs.decode("utf-8")
二进制文件ASCII码
照片、音乐、视频、计算机程序等
优点:
更加节省空间
采用二进制无格式存储
表示更为精确
注意:
文本文件是基于字符定长的ASCII;
二进制文件编码是变长的,灵活利用率要高;
不同的二进制文件解码方式是不同的。
文件操作
读取
写入
定位
其他:追加、计算等
Open()
<variable> = open (<name>, <mode>)
<name>磁盘文件名
<mode>打开模式
打开模式 r |
只读。如果文件不存在,则输出错误 |
w |
为只写(如果文件不存在,则自动创建文件) |
a |
表示附加到文件末尾 |
rb |
只读二进制文件。如果文件不存在,则输出错误 |
wb |
只写二进制文件,如果文件不存在,则自动创建文件。 |
ab |
附加到二进制文件末尾 |
r+ |
读写 |
打开一个名为"numbers . dat"的文本文件
>>> infile = open ("numbers.dat", "r")
打开一个名为"music.mp3"的音频文件
>>>infile = open ("music.mp3", "rb")
read() 返回值为包含整个文件内容的一个字符串
readline() 返回值为文件下一行内容的字符串。
readlines() 返回值为整个文件内容的列表,每项是以换行符为结尾的一行字符串。
从计算机内存向文件写入数据
write():把含有本文数据或二进制数据块字符串写入文件中。
writelines():针对列表操作,接受一个字符串列表作为参数,将它们写入文件。
文件遍历
拷贝文件
根据数据文件定义行走路径
将文件由一种编码转换为另外一种编码
通用代码框架:
file = open (someFile, "r")
For line in file.readlines():
#处理一行文件内容
file.close()
简化代码框架:
file = open (someFile, "r")
For line in file:
#处理一行文件内容
file.close()