- 在命令行窗口运行程序的文本
工具:Sunblime Text、Notepad++等。
过程:在文本编辑工具中将写好的代码保存到指定目录,文件后缀为.py;在命令行窗口中切换到存有后缀为.py的目录下输入:python 文件名.py
- import的使用
1、import语句(就像c++中头文件包含函数:include<cmath>,include相当于import而cmath则与模块相似,不同的是include不能同时包含多个函数)
import module[,module[,...moduleN]
一个import语句可以导入多个模块,但各个模块之间需要用逗号隔开。
搜索路径:一个解释器,先搜索所有目录的列表。
使用import语句时,python的搜索路径(由一些列目录组成)依次从这些目录中寻找引入的模块,与环境变量相似。
from与import连用可以达到从模块中引入指定部分到当前名命名空间的目的。
from modname import name1[,name2[,...nameX] 例如:from math import pi即为导入math模块中的pi。(如果导入模块,就会得到模块中所有对象,但如果导入某个对象那么就只能得到这个对象。使用from语句时,虽然不能使用某个模块中的所有对象,但使用引用的对象时更为简洁:pi,如果直接导入整个模块,则需输入:math.pi。
如果需要使用from语句将模块中的多个对象则对像间用逗号隔开:如果需要全部导入,则输入:from math import *。
在import后加上as语句,则可以给模块或模块的某个对象取别名。
2、逗号输出
print语句中输出多个表达式只需要将每个表达式用逗号隔开。另外,不使用格式化操作符直接填入变量名也可以输出想要的结果。
- 赋值方式
1、序列解包
python中一条语句就可以对多个变量赋值,不同变量之间用逗号隔开即可:x,y,z=1,2,3。
交换所做的事情叫做序列解包(可选迭代解包),即将多个值的序列解开,然后放到变量序列中。
popitem()方法可将建-值对作为元组返回,返回的元组可通过序列解包赋值到两个变量之中。该方法没有参数。代码如下:
dict={‘name’,‘小明’,‘number,’10112‘}
k,v=dict.popitem()
序列解包允许函数返回一个以上的值并打包成元组,然后通过一个赋值语句进行访问,但需要注意的是,序列解包中“=”左右两边的变量和值必须数量完全一致,否则会报错。(序列解包时,一定要保证左右两边的数量相等)
2、链式赋值
通过多个等式对不同的变量赋同样的值:x=y=z=1101
3、增量赋值
语句x=x+10等同于x+=10,对*、/、%、等运算符同样适用,另外增量赋值也同样适用于二元运算(任意两个集合、矩阵、函数等相加相乘)符的数据类型,如:
a=‘hello ’
b=‘world!’
a+=b
print(a)
输出结果为:“hello world!”
增量赋值使代码更简练、紧凑。
- 语句块
python中连续保持相同首行缩进的一系列代码组成一个语句块,其中冒号”:“用来标识语句块的开始(冒号之后的语句块为一个整体,例如在条件语句后加上冒号,冒号之后的首行缩进相同的语句为循环体)
- 条件语句
1、布尔变量
非零即为真,所有类型的数字0(包浮点型、长整数型和其他类型)、空序列(如空字符串、空元组和空列表)以及空字典都为假,其他值都为真,包括原生的布尔值true。
bool函数,将其他值转换为布尔值:bool(‘ ‘)结果为false,bool(2),结果为true。
需要注意的是:bool(’ ‘)==bool([])==false,但’ ‘与[]本身并不相等,其他类型也一样。
2、if语句
if 条件:
语句块
条件中除了表示大小关系的符号判断之外,还可以使用函数返回值作为条件判定,这与C++类似,只是语法格式有所差异。
另外在开头两行写下语句:
#!/usr/bin/python3
#-*-coding:UTF-8-*-
可以解决代码移植和编码的问题。
3、else语句
与C++类似,else需要与if语句连用。
4、elif子句
elif即为else if的简写,用法与C++中else if 语句类似,需要注意的是,只能和if、else连用,不能独立使用,并且只能以if语句开头,是否以else结尾可根据需要选择。
5、嵌套代码块
即if、else、elif的混合使用,这里需要注意的是每个语句块需要保持相同的首行缩进。
- 其他操作
1、is:同一性运算符
is运算符用于判断同一性而不是相等性(判定两个不同变量是否指向同一个内存空间),他们的值可能相等,但却不是同一个对象。
使用==运算符是判断两个对象是否相等,而is 是判定两个对象是否等同(是否为同一对象)。相等即为值相等,等同为所指对象相同。
2、比较字符串和序列
可以对列表进行比较操作,如果一个列表中包括其他序列元素,比较规则也适用于其他序列元素(如嵌套列表的比较),比较字符串时,是比较其对应的ascll码。
3、布尔运算符
x and y,当x、y都为真时,才返回真,否则返回假,有一个为假时,如果x为假,返回x的值,否则返回y。(短路逻辑)
x or y,x为真时返回x,否则返回y,返回某个值后,该语句后面的代码不会被执行。
- 断言
与if接近的伪代码:
if not condition
crash program
防止在运行时崩溃,使其在出现错误条件时就崩溃。
assert关键字可以要求一些条件必须为真。当assert后的条件为真时,程序正常运行;当assert后面的条件为假时,输出错误信息提示(由用户自己定义,称为异常参数)
使用assert时需要注意:
(1)assert断言用来声明某个条件是真的;
(2)如果确信使用的列表中至少有一个元素,要想检验这一点,并在他非真时引发一个错误,就可以使用assert语句;(3)assert语句失败,会引发一个AssertionError。
- 循环
1、while循环
while 判断条件:
语句块
while循环用法和c++类似,不同的是python中没有do语句。
2、for循环
for循环与C++中用法有所差别,语法格式如下:
for iterating_var in sequence:
statements(s)
其中,sequence是任意序列,iterating_var是序列中需要遍历的元素。(for循环中需要建立一个类似于临时变量的东西,通过这个临时变量对相关序列进行遍历。)
python中for语句执行流程:
首先对for条件判定,游标指向第0个位置,即指向第一个元素,看sequence中是否有元素,若有,则将元素值赋给iterating_var,接着执行语句块,若语句块中需要获取元素值,则使用iterating_var 的值,执行完语句块后,将序列游标指向下一位置,再判断,如此往复循环,直至下一个位置没有元素时,结束循环。
3、利用for循环遍历字典
dict={‘姓名’:‘小明’,‘编号’:‘110012’}
for d in dict:#简单遍历方法
print(‘%s:%s’%(d,dict[d]))
在for循环中使用序列解包,items方法:将键-值对作为元组返回。不过需要注意的是,字典中的元素是没有顺序的,即用for循环输出字典中的元素时,不会按照顺序输出。
dict={'姓名':'小明‘,’编号‘:’110012‘}
for k,v in dict.items():
print('%s:%s'%(k,v))
4、迭代工具
(1)并行迭代
同时迭代两个序列:
num1=[1,2,3,4]
num2=[a,b,c,d]
for n in range(len(num2)):
print(num2[n],'----',num1[n])
python 中,内建函数zip可用来进行并行迭代,可以把 两个序列合并在一起,返回一个元组的列表:
num1=[1,2,3,4]
num2=[a,b,c,d]
for n,v in zip(num1,num2):
print(n,'----',v)
结果和上一段代码结果一样。
zip函数可以作用于任意数量的序列,并且可以应付不等长的序列,不过当短序列“用完”时,zip函数就会停止。即以段序列为准,当段序列遍历结束时,for循环就会遍历结束。
2、翻转和排序迭代
reversed和sorted函数可作用于任何序列或可迭代对象,但不是原地修改对象,而是返回翻转或排序后的版本。需要注意的是,sorted(默认情况下按ascll码从小到大排序)返回的是一个列表,reversed返回的是一个可迭代的对象。
- 跳出循环
1、break
与C++类似,break直接终止循环语句,不管条件或序列有没有遍历完都会停止循环,需要注意的是,如果使用了嵌套循环,break语句会停止执行最深层次的循环,并开始执行下一行代码。
2、continue
与c++类似,continue用于跳过当前循环的剩余语句,继续下一轮的循环。
- 循环中的else子句
1、在while循环中使用else语句
在while条件语句为false时,执行else的语句块。
2、在for循环中使用else语句
在for循环条件语句为false或结束后没有break中断时,执行else语句块。
- pass语句
python中pass是空语句,用来保持程序结构的而完整性。pass不做任何事,只是占位符。