选择结构
选择结构是通过判断条件是否成立来决定执行哪一个分支。选择结构有多种形式:单分支、双分支和多分支。
结构图绘制如下:
单分支选择结构分析:
if 语句单分支结构:
if 条件表达式:
语句/语句块
#输入一个数字,小于10,则打印这个数字
num = input("请输入一个数字:")
if int(num) < 10 :
print(num)
条件表达式详解:
在选择和循环结构中,条件表达式的值为 False 的情况如下: False、0、0.0、空值 None、空序列对象(空列表、空元祖、空集合、空字典、空字 符串)、空 range 对象、空迭代对象。
其他情况,均为 True。这么看来,Python 所有的合法表达式都可以看做条件表达式,甚至
包括函数调用的表达式。
双分支选择结构分析:
if 条件表达式 :
语句 1/语句块 1
else:
语句 2/语句块 2
#输入一个数字,小于10,则打印该数字;大于10,则打印“数字太大”
num = input("请输入一个数字:")
if int(num)<10:
print(num)
else:
print("数字太大")
多分支选择结构分析:
多分支选择结构的语法格式如下:
if 条件表达式 1 :
语句 1/语句块 1
elif 条件表达式 2:
语句 2/语句块 2
.
.
.
elif 条件表达式 n :
语句 n/语句块 n
[else:
语句 n+1/语句块 n+1
]
#输入一个学生的成绩,将其转化成简单描述:不及格(小于60)、及格(60-79)、良好(80-89)、优秀(90-100)
#方法1:条件语句
score = int(input("请输入分数:"))
grade = ''
if (score<60):
grade = "不合格"
if (60<=score<80):
grade = "合格"
if (80<=score<90):
grade = "良好"
if (90<=score<100):
grade = "优秀"
print("分数为:{0},属于等级为:{1}".format(score,grade))
#方法2:多分支结构
score = int(input("请输入分数:"))
grade = ''
if score<60:
grade = "不合格"
elif score<80:
grade = "合格"
elif score<90:
grade = "良好"
if score<100:
grade = "优秀"
print("分数为:{0},属于等级为:{1}".format(score,grade))
选择结构嵌套:
选择结构可以嵌套,使用时一定要注意控制好不同级别代码块的缩进量,因为缩进量决定了
代码的从属关系。
#输入一个分数。分数在 0-100 之间。90以上是A,80 以上是B,70以上是C,60以上是D,60以下是E。
score = int(input("请输入一个在 0-100 之间的数字:"))
grade = ""
if score>100 or score<0:
score = int(input("输入错误!请重新输入一个在 0-100 之间的数字:"))
else:
if score>=90:
grade = "A"
elif score>=80:
grade = 'B'
elif score>=70:
grade = 'C'
elif score>=60:
grade = 'D'
else:
grade = 'E'
print("分数为{0},等级为{1}".format(score,grade))
循环结构:
循环结构用来重复执行一条或多条语句。表达这样的逻辑:如果符合条件,则反复执行循环体里的语句。在每次执行完后都会判断一次条件是否为 True,如果为 True 则重复执行循环体里的语句。同时,在循环体中应该包含改变条件表达式的语句,以使循环趋于结束;否则就会变成一个死循环。
while 循环:
#利用 while 循环打印从 0-10 的数字
num = 0
while num <= 10:
print(num)
num = num + 1
for 循环:
for 循环通常用于可迭代对象的遍历。
for x in (10,20,30):
print(x*3)
可迭代对象:
1、序列。包含:字符串、列表、元组
2、字典
3、迭代器对象(iterator)
4、生成器函数(generator)
5、文件对象
range 对象:
range对象是一个迭代器对象,用来产生指定范围的数字序列。
格式为:range(start,end,[step]),生成的数值序列从 start 开始到 end 结束(不包含 end)。若没有填写 start,则默认从 0 开始。step 是可选的步长,默认为 1。
我们先来做一下简单的基本语句:
for i in range(5):
print(i)
#产生序列:0 1 2 3 4
for i in range(1,10):
print(i)
#产生序列:1 2 3 4 5 6 7 8 9
for i in range(1,10,2):
print(i)
#产生序列:1 3 5 7 9
然后进一步使用循环语句:
#利用for循环,计算1-100之间数字的累加和;
#计算1-100之间偶数的累加和,计算1-100之间奇数的累加和。
sum_all = 0 #1-100所有总数和
sum_even = 0 #1-100 偶数累加和
sum_odd = 0 #1-100 奇数累加和
for num in range(101):
sum_all += num
if num %2 == 0:
sum_even += num
else:
sum_odd +=num
print("1-100 累加总和{0},奇数和{1},偶数和{2}".format(sum_all,sum_odd,sum_even))
嵌套循环和综合练习
一个循环体内可以嵌入另一个循环,一般称为“嵌套循环”,或者“多重循环”。
首先打印如下图案:
for x in range(5):
for y in range(5):
print(x,end='\t')
print()
还有一个很经典的,打印9x9乘法表:
for i in range(1,10):
for m in range(1,i+1):
print("{0}*{1}={2}".format(i,m,(i*m)),end="\t")
print()
打印的效果如图:conti
break语句:
break 语句可用于 while 和 for 循环,用来结束整个循环。当有嵌套循环时,break 语句只
能跳出最近一层的循环。
while True:
a = input("请输入一个字符:(Q或者q)")
if a.upper()=='q':
print('循环结束,退出')
break
else:
print(a)
continue语句:
continue 语句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最
近的一层循环。
#要求输入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和 薪资明细,
#以及平均薪资
empnum = 0
salarysum = 0
salarys = []
while True:
s = input("请输入薪资(按Q或q结束)")
if s.upper()=='Q':
print("录入完成,退出")
break
else:
if float(s)<0:
continue
empnum += 1
salarys.append(float(s))
salarysum += float(s)
print("员工数{0}".format(empnum))
print("录入薪资:",salarys)
print("平均薪资{0}".format(salarysum/empnum))
else语句:
while、for 循环可以附带一个 else 语句(可选)。如果 for、while 语句没有被 break 语句
结束,则会执行 else 子句,否则不执行。语法格式如下:
使用zip()并行迭代:
我们可以通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。
names = ['Esther','Alex','Jex','Ricky']
ages =[21,22,23,24]
sexs = [0,1,1,1]
for name,age,sex in zip(names,ages,sexs):
print("{0}--{1}--{2}".format(name,age,sex))