计算机程序是一条条按顺序执行的指令。顺序结构是是计算机程序的基础,但单一的顺序结构不能解决所有问题。计算机程序由三种基本结构组成:
-
顺序结构
-
分支结构
-
循环结构
顺序结构是程序执行的基本流程,它会按照代码从上往下的顺序依次执行。
a = 1 a += 1 print(a)
2
例如上面的代码,执行流程为
1.定义变量 a,并赋值为整数 1 2.变量 a 自加 1 3.调用函数 print 输出变量 a 的值
从上往下依次执行
2. 分支结构分支结构是程序根据条件判断结果而选择不同代码向前执行的一种方式,也叫条件分支。
2.1 单分支
在 python 中单分支结构通过 if 语句来实现,语法如下
if <条件>: 语句块
-
注意条件语句结束后要紧跟冒号
-
语句块是 if 条件满足后执行的一条或多条语句序列
-
语句块中语句通过缩进与 if 语句所在行形成包含关系
-
缩进按照规范为 4 个空格
if 语句会首先计算 <条件> 表达式,如果结果为 True 则会执行所包含的语句块,结果为 False 则会跳过所包含的语句块。
if 语句中的语句块的执行与否依赖于条件判断。但无论什么情况,控制都会 转到与 if 语句同级别的下一条语句。
input函数
input函数用来接收用户输入的文本信息,然后以字符串的形式返回,它接收字符串参数作为提示信息输出。
score = input('请输入你的成绩>>>:')
print(score,type(score))
请输入你的成绩>>>: 100100
score = input('请输入你的成绩>>>:')
# 转换类型
score = float(score)
# 判断
if score < 60:
print('没及格,赏一巴掌')
if score >= 60:
print('有进步')
请输入你的成绩>>>: 100有进步
2.2 二分支
python 中二分支结构通过 if-else 语句来实现的,语法 格式如下:
if <条件>: <语句块1> else: <语句块2>
-
< 语句块 1> 是在 if 条件满足后执行的一个或多个语句序列
-
< 语句块 2> 是 if 条件不满足后执行的语句序列
-
注意缩进,< 语句块 2> 通过缩进与 else 所在行形成包含关系
score = input('请输入你的成绩>>>:')
# 转换类型
score = float(score)
# 判断
if score < 60:
print('没及格,赏一巴掌')
else:
print('有进步')
请输入你的成绩>>>: 100有进步
三目运算
二分支结构还有一种更简洁的表达方式,语法格式如下:
<表达式> if <条件> else <表达式2>
适合代码块为 1 行语句时,这种方式也叫三目运算。
score = input('请输入你的成绩>>>:')
# 转换类型
score = float(score)
# 判断
print('没及格,赏一巴掌') if score < 60 else print('有进步')
请输入你的成绩>>>: 100有进步
2.3 多分支
python 通过 if - elif - else 表示多分支结构,语法如下
if <条件1>:
<代码块1>
elif <条件2>:
<代码块2>
...
else:
<代码块3>
多分支是二分支的扩展,用于多个判断条件多条执行路径的情况。python 依次执行判断条件,寻找第一个结果为 True 的条件,执行该条件下的代码块,同时结束后跳过整个 if-elif-else 结构,执行后面的语句。如果没有任何条件成立,则执行 else 下的代码块,且 else 语句是可选的,也即是说可以没有 else 语句。
score = input('请输入你的成绩>>>:')
# 转换类型
score = float(score)
# 判断
if score < 40:
print('等级:E')
elif 40<= score < 60:
print('等级:D')
elif 60<= score < 75:
print('等级:C')
elif 75<= score < 85:
print('等级:B')
else:
print('等级:A')
请输入你的成绩>>>: 100等级:A
3.循环结构
python 中循环结构有两种:
1、条件循环也叫 while 循环 2、遍历循环也叫 for 循环
3.1 条件循环
python 中的条件循环通过 while 循环语句来实现,所以也叫 while 循环,语法格式如下
while <条件>:
代码块
-
while 关键字空格后接条件表达式末尾加上冒号组成 while 语句
-
代码块中的代码通过 4 个空格和 while 语句形成包含关系
while 语句首先计算 <条件> 表达式,如果结果 True,则执行对应代码块中的语句,执行结束后再次执行 <条件>
表达式,再次判断结果,如果为 True 则循环执行,直到 <条件> 表达式为 False 时跳出循环,执行和 while 语句相同缩进的下一条语句。
当 <条件> 表达式恒为 True 时,形成无限循环,也叫死循环,需要小心使用。
# 依次打印0-9
i = 0
while i < 10:
print(i)
i = i + 1
0 1 2 3 4 5 6 7 8 9
# 序列的循环
# 列表的元素循环
ls = ['a','b','c','d','e','f']
index = 0
while index < len(ls):
print(ls[index])
index += 1
a b c d e f
# 散列的循环
# 集合没办法循环
dc = {'name': 'felix', 'age': 18}
index = 0
# 转换成列表
keys = list(dc.keys())
while index < len(keys):
print(dc[keys[index]])
index += 1
felix 18
3.2 遍历循环
python 中使用关键字 for 来实现遍历循环,也叫 for 循环,也叫迭代循环,语法格式如下:
for <循环变量> in <遍历结构>:
代码块
-
关键字 for+ 空格 +<循环变量>+ 关键字 in+< 遍历结构 >+ 冒号组成 for 语句
-
代码块通过缩进和 for 语句形成包含关系
for 循环会依次取出遍历结构中的元素,然后赋值给循环变量,每次遍历都会执行代码块,只到取出遍历结构中的所有元素。
所有可迭代对象都可以作为遍历结构进行 for 循环。
基本数据类型中序列数据类型,散列数据类型都可以进行迭代。
# for循环来遍历可迭代对象非常方便
# 序列的迭代
# 列表的迭代
ls = [0,1,2,3,4,5,6,7,8,9]
for i in ls:
print(i)
0 1 2 3 4 5 6 7 8 9
# 散列的迭代
st = {1,2,3,4,5,6}
for i in st:
print(i)
1 2 3 4 5 6
dc = {'name': 'test', 'age': 18}
# 字典key的迭代
for key in dc:
print(key)
name age
# 字典值的迭代
for key in dc:
print(dc[key])
test 18
for value in dc.values():
print(value)
test 18
迭代器(iterator)
迭代器是一个可以记住遍历位置的对象。for 循环迭代本质上就是通过迭代器来实现的。
通过内建函数 iter 可以创建迭代器。
iter('abc')
不是所有的数据类型都可以创建迭代器,凡是能够创建迭代器的对象称为 可迭代对象,反之是 不可迭代对象
range()函数
内建函数 range 可以创建输出整数序列的迭代器
range(start,stop,step)
range(i,j)生成 i,i+1,i+2,...,j-1,start 默认为 0,当给定 step 时,它指定增长步长。
# 输出0-9
for i in range(10):
print(i)
0 1 2 3 4 5 6 7 8 9
# 输出1-10
for i in range(1,11):
print(i)
1 2 3 4 5 6 7 8 9 10
# 输出-1--10
for i in range(-1,-11,-1):
print(i)
-1 -2 -3 -4 -5 -6 -7 -8 -9 -10
3.3 循环控制关键字
break关键字
python 中循环结构可以使用 break 跳出当前循环体,脱离该循环后代码继续执行
ls = [60,59,78,80,56,55]
for i in ls:
if i >= 60:
print('有同学及格')
break
有同学及格
# 双循环
for i in range(1,4):
for j in range(1,4):
if i==2:
break
print(i,j)
1 1 1 2 1 3 3 1 3 2 3 3
continue关键字
python 中循环结构还可以使用 continue 关键字用来跳出当次循环,继续执行下一次循环。
# 输出所有的偶数
for i in range(10):
if i%2 == 0:
continue
print(i)
1 3 5 7 9
else关键字
循环结构还可以通过和 else 关键字进行配合,用来检测循环是否正常循环结束,还是 break 掉了。
for i in range(10):
if i%2 != 0:
continue
print(i)
else:
print('循环正常结束')
0 2 4 6 8 循环正常结束
for i in range(10):
if i%2 != 0:
break
print(i)
else:
print('循环正常结束')
0
二、异常处理
在 python 中通过 try-except 语句进行异常处理
try-except 语句的基本语法格式如下:
try:
<语句块1>
except <异常类型1>:
<语句块2>
except <异常类型2>:
<语句块3>
语句块 1 中的代码如果发生异常,且异常与类型与对应 excep 语句中的异常类型相同则会被其捕获,从而执行对应的语句块
try:
score = input('请输入你的成绩>>>:')
# 转换类型
score = float(score)
# 判断
if score < 40:
print('等级:E')
elif 40<= score < 60:
print('等级:D')
elif 60<= score < 75:
print('等级:C')
elif 75<= score < 85:
print('等级:B')
else:
print('等级:A')
except ValueError as e: #将异常信息作为变量e,输入e来输出错误信息
print(e)
print('请输入正确的成绩')
请输入你的成绩>>>: acould not convert string to float: 'a' 请输入正确的成绩
except Exception 表示所有的异常类型
除了 try 和 except 关键字外,异常语句还可以与 else 和 finally 关键字配合使用,语法格式如下:
try:
<语句块1>
except <异常类型>:
<语句块2>
...
else:
<语句块3>
finally:
<语句块4>
没有发生异常时,会执行 else 语句后的代码块,不管有没有发生异常,finally 语句后的代码块一定会执行
try:
a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
index = input('请输入一个正整数>>>:')
index = int(index)
print(a[index])
except Exception as e:
print(e)
print('请输入一个正整数')
else:
print('没有发生异常')
finally:
print('我一定会执行')
请输入一个正整数>>>: 1B 没有发生异常 我一定会执行
try:
a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
index = input('请输入一个正整数>>>:')
index = int(index)
print(a[index])
except Exception as e:
print(e)
print('请输入一个正整数')
else:
print('没有发生异常')
finally:
print('我一定会执行')
请输入一个正整数>>>: asinvalid literal for int() with base 10: 'as' 请输入一个正整数 我一定会执行



