为什么要区分控制结构 ?
人生如戏,程序如人生,酸甜苦辣一样会出现在代码之中,各种条件,各种重复,有没有?
前面我们接触到的程序结构都是从下到上依次执行的,这种我们称之为顺序结构。那么一个程序仅有顺序结构就足够了?请思考下面的问题?
1.用户输入了两个整数a和b,如何打印最大的那个。
2.打印a的值2遍? 10遍? 100遍?
Python的控制结构有哪些?
1.顺序结构
从下到上依次执行
2.判断结构
判定结构是根据条件来决定接下来的行为。
if 条件a:
条件a成立执行的代码
elif 条件b:(条件a不成立才会跳到条件b)
条件b成立执行的代码
......
else:
以条件都不成立执行的代码
每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块
使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块
对两个数字进行判断,如果a>b 输出a大,并且输出a是基数还是偶数,如果a<b ,输出 b大,否则输出a=b
注意: 在判断嵌套下 不能直接写elif 需要先写if 否则会报错
判断嵌套
a = input("输入数字a:")
b = input("输入数字b:")
if a>b:
if a%2 == 0:
print(f"a大,{a}是偶数")
elif a%2 != 0:
print(f"a大,{a}是奇数")
else:
pass
elif a<b:
print("b大")
else:
print("a=b")
在嵌套if语句中,可以把 if...elif..else结构放在另外一个if..elif..else结构中
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else:
语句
elif 表达式4:
语句
else:
语句
3.循环结构
比较运算符
if语句中常用的比较运算符书写方式:
if a > b:
if a <= b:
if a == b:
if a != b:
if not a: #当a为假时条件成立,等价于if a == False
if a: #当a为真时条件成立,等价于if a == True
在Python中会被认为是假(False) 的值: None、[]、‘’、{}、()
循环
*whlie循环语法
while 条件:
当条件成立,执行的代码
循环体
for循环语法
for新的变量in 可迭代对象:
循环执行的代码
可迭代对象:数据类型中的值是可以被循环迭代,可迭代对象是指 列表,元祖,字典,集合
不可迭代的数据类型:数值型
whlie循环
begin = 1
sum_num = 0
while begin <= 100:
sum_num += begin
begin += 1
print(sum_num,begin)
for循环
name = ['zhangsan','lisi','wangwu','zhouba']
for x in name:
print (x)
上面是一个使用for循环来遍历列表的例子。使用for..in...的语法,循环读取name中的元素存放到变量x每存放一次就打印一次
需要循环输出一个列表中的值
ls = [12,13,14,15,16,"字符串",[666,777] ,(88,"元祖")]
for x in ls:
print(x)
#print(ls)这是一种错误的写法
循环打印一个字符串的中的字符
for z in "wqgdffdgffasd" :
print(z)
该如何选择for循环还是while循环
- for循环一般用在一个已知的集合里面进行循环的时候,比如列表里面循环、range数字范围内循环、集合循环、字典循环等
- while一般用于明确知道循环条件,比如大于某个值,或者某个值为真或为假时运行循环。
循环练习题目
for循环练习
1、求100-200以内同时能被7,8整除的数
for i in range(100,201):
if (i%7 == 0 and i%8 == 0):
print(i)
2、for循环实现 1+到100的和
i = 0
sum = 0
for i in range(1,100,1):
sum += i
print(sum)
3、使用for循环实现 99乘法表
for i in range(1,10):
for j in range(1,i+1):
print(f"{i}*{j}={i*j}\t",end="")
print()
嵌套循环
循环是可以嵌套使用的,当使用嵌套循环时,可以任意组合for和while循环来进行使用。
对于嵌套循环,需要注意外层循环和内层循环的执行顺序。
对于嵌套循环中使用break的情况,内层循环中的break只能跳出内层当次循环,无法直接跳出整个循环。
for i in range(10):
print(‘i的值为:’,i)
for n in range(10):
print('n的值为:',n)
if i == 5 and n ==5:
#如何退出内外全部循环??
for循环嵌套
for 变量1in 可选代对象1:
for 变量2 in 可迭代对象2:
循环体
判断
while 循环嵌套
while 条件1:
whlie 条件2:
当条件1和2成立,执行的代码
循环体
continue是跳出本次循环,直接进入下一次循环
循环中的continue和break
continue: 跳出本次循环继续下一次循环
break: 结束循环
循环中加入else
循环中加入else语法,主要用于实现使用循环在列表中查找某元素
例:随机生成一个有10个元素的分数列表(分数在50-70之间),要求检查该成绩列表里是否有刚好60分的成绩,有的话就打印有,没有的话就打印没有
循环中的else用法:
循环中打印1-100的数字,如果数字=66就打印66的值,否则打印什么也没有
for else_num in range(1,101):
if else_num == 66:
print(f"当前数字:{else_num}")
break
else:
print("什么也没有")
练习:
1、随机生成一个有10个元素的分数列表(分数在50-70之间) ,要求检查该成绩列表里是否有刚好60分的成绩有的话就打印有,没有的话就打印没有。
import random
sj_list = random.sample(range(50,71),10)
bbb = []
for i in sj_list:
bbb.append(i)
if 60 in bbb:
print("有")
else:
print("没有 ")
2、从控制台接收一个数字,判断这个数字是否在已知的列表中[1,2,3,4,5,6,7,8,9,10],如果在就打印数字存在否则打印数字不在。
list = [1,2,3,4,5,6,7,8,9,10]
i = int(input("请输入数字:"))
if i in list:
print("i is in the list")
else:
print("i is not in list")