Python顺序结构、分支结构(判断)和循环结构
一、顺序结构
秉承从上到下,从做到右的运行规则,如下图:
#顺序结构 xiaoming = "我很帅。" xiaoliu = "小明你的确很帅,但是不能当饭吃啊!!!,还是要继续努力学习!" print("小明说:"+xiaoming,xiaoliu,sep='小刘鄙视的说:') #=运行结果 小明说:我很帅。小刘鄙视的说:小明你的确很帅,但是不能当饭吃啊!!!,还是要继续努力学习!
二、分支结构--条件判断
条件语句或判断语句,指明了当某些条件成立时才运行某个模块。否则,会跳过这个区块中的语句,然后继续运行区块后面的语句,python中的条件语句都以if开头
2.1.if语句
如下例子,输入年龄,根据不同的年龄打印不同的内容,用python中if语句怎么实现:
age = int(input("请输入年龄:")) if age >= 20: print("你今年"+age+岁) print("ok")
python中,如果if后面条件语句判断是True,就把缩进的两行print语句执行,否则,什么不会执行,注意:
- 每个条件语句后面有个冒号
- 每个条件语句下面的缩进,就是为了让python解释器知道:条件满足后,要执行的代码究竟到什么位置。当然缩进四个空格只是推荐做法,你完全可以缩进1个、2个或者6个,甚至Tab键盘进行缩进。但是同一个条件语句下面对应的执行代码必须对齐。如果缩进一个空格,那么都缩进一个,相邻的相同缩进距离的代码都是顺序执行的
2.2 if-else
语句
也可以给if添加一个else语句,意思是,如果if后面的条件语句判断是False,不要执行if的内容,而是执行else的那部分
age = int(input("请输入年龄:")) if age >= 18: print("你成年了") else: print("你还是未成年人,不能上网!!!")
else语句对应下面要执行的代码缩进规则和if语句一致
2.3.elif语句
如果需要更加多的判断情况,这时候采用elif的方法,elif是else if的缩写
results = int(input("请输入你的成绩:")) if results >= 90: print("你的成绩很优秀") elif 90 > results >= 70: print("你的成绩良好") elif 70 > results >= 60: print("成绩合格") else: print("很遗憾,成绩不合格,继续努力哦")
注意:
- 条件判断代码以if开头,其余的条件以elif开头,结尾else表示不满足除了上面的条件以为的情况
- 每个条件语句后面有个冒号:
- 每个条件语句下面对应的执行内容,均以缩进缩进了四个空格
- 也可以只有if,而没有else
补充:if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,忽略掉剩下的elif和else
2.4.多个条件表达式的组合
多个条件的组合
age = 60
gender = 'male'
if age >=60 and gender == 'male':
print('old gentleman')
上面需要同时成立两个条件,关键字是and,如果是其中一个条件成立即可的关键字,我们用or,比如:
age = 60
gender = 'male'
if age >= 60 or age < 18:
print('you can not play this game')
我们经常在一个条件前面加上not表示反义,比如
age = 60
gender = 'male'
if not(age >= 60 or age < 18):
print('you can play this game')
如下组合也可以
age = 60
gender = 'male'
if (age >= 60 or age <18 and gender=='female')
print('you can not play this game')
2.5.条件语句嵌套
条件语句块里面还有条件判断。可以称之为条件语句的嵌套
如下例子:假设一个班级,要给学生安排座位,规则是同名的学生不能安排在一个课桌。并且每个课桌上,名字按字母排序,排在前面的坐在左边
if studentname1 != studentname2: print('this could sit together') if student01 <= student02: print('%s sit in left' % studentname1) else: print('%s sit in left' % studentname2)
注意:里面的条件判断对应的执行代码再次缩进
三、循环
判断和循环是两个最基本的控制程序执行的方式。上面我们讲了条件判断,现在来说说循环。所谓循环就是重复的执行某段代码段。可能会给循环设定一些条件,只有添加满足就不断循环,条件不满足时推出循环
3.1.while循环
python就采用while关键字来表示某个条件成立情况下,一直执行一些动作,语法如下:
while 条件表达式 循环代码
python中如果需要做不定次数的循环,建议使用while Ture这种结构,但python中没有do-while这种循环
li = [] while True: i = input('说:') if i != 'quit': li.append(1) else: break()
我们要避免错误的死循环,可是死循环在特定场所也有其应用,像Liunx Shell这样人机交互程序,就是一个死循环,它循环等待用户输入命令,执行,在等用户输入命令。在执行。
3.2.for循环
for循环,在明确循环次数的时候建议使用for循环。
python中for循环可以取一个范围内的值:
for i in range(3): age = int(input("请输入年龄:")) if age >=18: print("你已经成年了") elif age >= 65: print("退休时候了,好好享受吧!!!") else: print("哎呀,年龄太小,好好学习吧")
python中for循环还可以直接从序列中取出元素
#for循环从列表选取 list_num = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'] for i in list_num: print(i)
3.3循环嵌套
在循环里面还有循环。这样子被称之为循环的嵌套。循环嵌套通常用来列出可能的组合性,如下:
boys = ['Mike','Jack','Tom'] girls = ['Lisa','Linda','Mary'] for boy in boys for girl in girls: print('%s kiss %s' % (boy,girl))
嵌套循环,是从外层往内执行的。当内层的循环都执行完后,再继续执行外层循环。
4.3.4.range()函数
如果我们想计算1-10的整数之和,可以用sum变量做累加
sum = 0 for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + x print(sum) print('*******') print(sum)
那如果要计算1到10000呢?,这时候就可以使用range()函数,可以生成一个整数序列,例如range(10)生成的序列是从0开始小于10的整数
Int_list = [] for one in range(10): Int_list.append(one) print(one) print(Int_list)
那1到10000求和是多少呢?
Int_list = [] for one in range(10001): Int_list.append(one) print(Int_list) print(sum(Int_list))
使用range指定区间的值
for i in range(5,10): print(i) D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/loop.py 5 6 7 8 9
注意,左含右不含,区间为5到10,但是不包含10
使用range()可以指定数字开始并指定不同的增量(甚至可以是负数,有时候也叫做步长),下面例子指定步长为5:
for one in range(0,20,5): print(one) #执行结果 D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/loop.py 0 5 10 15
结合range()和len()函数以遍历一个序列的索引,如下所示
se = ["google","Baidu","biying","sougou"] for i in range(len(se)): print(i,se[i]) #执行结果 D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/loop.py 0 google 1 Baidu 2 biying 3 sougou
3.5.break和continue
break语句用来中止当前的循环。注意这里的用词:当前循环。因为循环可能会嵌套
print("break用法展示:") sites = ["google","baidu","biying","sougou"] for site in sites: if site == "biying": print("找到了%s" % site ) break print("循环数据"+site) print("完成循环") D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/endCycle.py break用法展示: 循环数据google 循环数据baidu 找到了biying 完成循环
continue用于中止当前循环的continue后面的剩下的其余语句,但是当前循环本身并不中止,还要继续下一轮循环
print("continue用法展示:") sites = ["google","baidu","biying","sougou"] for site in sites: if site == "biying": print("找到了%s" % site) continue print("循环数据"+site) print("完成循环!!!")
D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/endCycle.py
continue用法展示:
循环数据google
循环数据baidu
找到了biying
循环数据sougou
完成循环!!!
3.6.else和pass关键字
else关键字
在 Python 中,else
语句可以与循环结构(for
和 while
)一起使用。它的行为与 if
语句中的 else
略有不同:
- 在循环中,
else
语句块会在循环正常结束时执行,即循环没有被break
语句中断时。 - 如果循环因为
break
语句而提前退出,则else
语句块不会执行。
for i in range(3): print(i) else: print("循环正常结束")
输出:
0 1 2 循环正常结束
在这个例子中,else
部分在 for
循环完成后执行,因为循环没有被 break
中断。
但是如果存在break,else里面的代码并不会执行
pass关键字
pass是为了使空结构的结构体能够顺利通过解释器编译的关键字,可以在循环结构、分支结构、函数类等结构中使用
li = ["hello","你好","哈哈大笑","吃饭","123"] for i in li: if i == "吃饭": print("不表演了,妈妈叫你吃饭了!!!") break elif i == "你好": pass
3.7 列表生成式
在python里面,我们经常要从一个squence类型的对象里产生一个list。假设下面是某部门人员税前工资表:
[10000,12000,20000,8500,5500,13000]
那现在我们要计算一下税收工资列表,需要把里面的所有元素乘以95%(假设个税为5%),该怎么做?
#已有知识实现
pay = [10000,12000,20000,8500,5500,13000]
pay_list = []
for one in pay:
pay_list.append(one*0.95)
print(pay_list)
但是python里面提供了,更加简单的写法
pay = [10000,12000,20000,8500,5500,13000] pay_list = [one*0.95 for one in pay] print(pay_list)
D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/list.py
[9500.0, 11400.0, 19000.0, 8075.0, 5225.0, 12350.0]
上述这种写法术语:List comprehensions。而且还支持过滤部分元素生成新的列表。它的完整语法如下:
[expr for iter_var in iterable if cond_expr]
比如上面薪资我们只想计算大于等于10000的那些,怎么计算
pay_list = [one*0.95 for one in pay if one >= 10000] print(pay_list)