2.1 条件结构
if语句
if 条件表达式: #注意有冒号
代码块 #注意缩进
else: #与if对齐
代码块
elif语句
if 条件:
代码块
elif 条件:
代码块
...
elif 条件:
代码块
else:
代码块
条件嵌套
同等缩进为同一条件结构
猜数字游戏:
运行结果:
2.2range和xrange
产生一组有规律的数据
语法:
range(start,end,step = 1) #start:起始值; end:终值; step:步长,不能为0,默认为1
range(start,end)
range(end) #0开始,不包含终值
以上都是生成真实的列表
xrange() #生成器,用多少生成多少;语法和range一样;Python3中没有xrange,当Python3中的range功能与xrange一样
显示xrange列表内容用list(xrange(10))
2.3循环
while循环
while 条件: #注意有冒号
代码块 #注意缩进
for 循环
明确循环次数
语法
for 一个变量 in 可迭代的对象: #注意冒号
代码块
可迭代的对象也就是说其值是可遍历的,在Python中可迭代的对象主要有string(字符串)、list(列表)、tuple(元组)、dictionary(字典)、file(文件)
for可以用列表解析和生成器表达式中:
列表解析
由一对中括号构成,先是一个表达式 ,然后for循环;最后还可以加一个条件
生成器表达式
用的是圆括号,和列表解析很像,但不创建列表而是返回生成器,和Python2中xrange()以及Python3中的range()函数一样,一般在数据量比较大的时候使用
2.4 循环中的break,continue和else
break语句
跳出当前所在的循环结构
continue语句
停止当前循环,重新进入循环(也就是停止continue后面的语句)
在while循环中,用于判断循环条件是否满足(满足则跳过continue后面的语句 ,重新进入循环)
在for循环中,用于判断迭代是否已经结束
循环中的else
如果循环代码从break处终止,跳出循环
正常结束循环,则执行else中的代码,while也可以和else搭配(正常结束while,执行else中的代码)
2.5自定义函数
自定义函数的创建,语法
def 函数名(参数): #参数可写可不写,一般写函数时,代码块先写docstring,也就是代码的注释
代码块
查看一个函数的docstring,可以:print 函数名.__doc__
默认参数
以赋值语句的形式提供
默认参数的值可以改变
不允许默认参数后面跟非默认参数,默认参数一般需要放置在参数列表的最后
关键字参数
直接写上参数的名字赋值,一旦使用了关键字参数,后面的参数都必须使用关键字参数
关键字参数是让调用者通过使用参数名区分参数
允许改变参数列表中的参数顺序
传递函数
把函数名当作参数传递给另一个函数
lambda函数,匿名函数
lambda 参数列表: 表达式 #注意冒号,返回的是表达式结果
2.6递归
递归必须要有边界条件,即停止递归的条件
递归的代码更简洁,更符合自然逻辑,更容易理解
递归执行效率不高,系统资源消耗比循环大,一般没有循环特征,但有递归特征采用,比如汉诺塔
2.7变量作用域
全局变量
在程序代码主体部分的变量
局部变量
在函数中的变量
如果全局变量和局部变量同名,遵循内层屏蔽外层
Python全局变量不能在函数内重新赋值
global语句
强调全局变量,使得全局变量可以在函数内重新赋值