这部分主要介绍Python的控制结构(顺序、选择分支、循环),和一些特殊的语句(pass, try-except,assert等)
顺序结构
学过编程的应该都会吧,略
选择分支结构
Python的选择分支结构,即if-else语句。直接例子说明:
a=5
if a>10:
print("a比10大")
elif a>5:
print("a比5大但比10小")
elif a>0:
print("a是小于等于5的正数")
else:
print("a是负数")
注意是elif,不是else if!
循环结构
python的循环结构有两种,for循环和while循环;先看for循环,它的基本结构是:
for item in sequence:
statements
#sequence可以是列表、字典等一个序列(下一个笔记会提到)
#以下面这个例子,a是一个列表,元素分别是1,3,5,7,9;for循环依次遍历所有元素,输出1,3,5,7,9;
#遍历完所有元素后,for循环结束
a=[1,3,5,7,9]
for i in a:
print(i) #1,3,5,7,9
#再举1个例子吧:
city=["Hangzhou","NewYork","London"]
for i in city:
print(i) #Hangzhou, NerYork, London
#字符串也是一个序列
a="Shanghai"
for i in a:
print(i,"-") #S-h-a-n-g-h-a-i
range类可以表示不可变序列的数字,通常表示for循环的具体次数。概念太抽象,直接看例子:
for i in range(5):
print(i) #0,1,2,3,4
for i in range(1,5):
print(i) #1,2,3,4
for i in range(1,10,2):
print(i) #1,3,5,7,9
for循环可以用break或continue退出。break表示还没结束就中途退出循环,continue表示跳过本次循环剩下的未执行步骤,直接进入下一次循环。比如:
for i in range(10):
print(i)
if i>3:
break
elif i<3:
continue
print("hahaha") #输出结果:0,1,2,3,"hahaha",4
无论是for循环还是while循环,都可以在后面接一个else语句块,仅在程序正常退出时执行。
用break或return退出的,不执行else语句块内容。
#下面这段程序非正常退出,运行的输出是a,b
seq=["a","b","c"]
for i in seq:
print(i)
if i=="b":
break
else:
print("正常退出")
#下面这段程序是正常退出,运行的输出是a,d,c,"正常退出"
seq=["a","d","c"]
for i in seq:
print(i)
if i=="b":
break
else:
print("正常退出")
一些特殊的语句(其他语言似乎没有的)
1、pass语句,用于填补结构上的缺位,没有实际含义;例如
if a>5:
print(a)
b=1
#如果觉得这么写不好看,可以改成
if a>5:
print(a)
else:
pass
b=1
这两种写法是一样的,但实现了if和else的贴贴。pass还可以用在其他地方:
while True:
pass #当必须执行while循环却没有任何语句供执行的时候
def function:
pass #当必须执行function这个函数,但函数体为空时
class A:
pass #当必须创建一个类却没有东西时
2、try-except语句
程序会先“尝试”执行try语句块的内容,如果报错则执行except的内容;程序不会退出。比如:
#假设把某文件中存储的一串数字读到列表a,并转换为float类型
#比如a=["1.2", "1.3", "2.7"]
for i in range(len(a)):
a[i]=float(a[i])
#但是如果某次文件出错了,列表a的值变成了:["1.2","1.m","2.7"]
#这时上面程序执行a[1]=float("1.m")时会报错,程序退出
#我不希望程序退出,我希望程序能够接着处理剩下的数字,就可以写成:
for i in range(len(a)):
try:
a[i]=float(a[i])
except:
pass
#这时a=[1.2, "1.m", 2.7]
3、assert语句:断言
格式为:assert 条件,表达式;当条件不满足时返回AssertionError。
例如下面的例子,我断言a应该大于5;如果执行中发现a≤5,程序自动退出并报错"AssertionError: a should be greater than 5"。
assert a>5, "a should be greater than 5"
再举个例子吧,以前我一直觉得所有豌豆都是圆的,并和原皮们愉快的原着。但有一天我发现了一个皱皮豌豆。那我还能继续愉快的原吗?当然不能,我必须高呼一声“有皱皮?!?”
结语
到这里python的所有控制结构和一些特殊的语句就都介绍完了。有些可能没那么常用,比如assert,pass,循环后的else语句块;但作为基本的了解仍有必要。
真的完了吗?有没有觉得少了什么?——python目前仍不支持do-while循环,switch-case分支和goto跳转语句(但可以安装第三方库来使之支持goto)。