4.1.顺序结构:秉承从上到下,从做到右的运行规则,如下图:
#顺序结构
xiaoming = "我很帅。"xiaoliu= "小明你的确很帅,但是不能当饭吃啊!!!,还是要继续努力学习!"
print("小明说:"+xiaoming,xiaoliu,sep='小刘鄙视的说:')#=运行结果
小明说:我很帅。小刘鄙视的说:小明你的确很帅,但是不能当饭吃啊!!!,还是要继续努力学习!
4.2.分支结构--条件判断
条件语句或判断语句,指明了当某些条件成立时才运行某个模块。否则,会跳过这个区块中的语句,然后继续运行区块后面的语句
python中的条件语句都以if开头
4.2.1 if语句
如下例子,输入年龄,根据不同的年龄打印不同的内容,用python中if语句怎么实现:
age = int(input("请输入年龄:"))if age >= 20:print("你今年"+age+岁)print("ok")
python中,如果if后面条件语句判断是True,就把缩进的两行print语句执行,否则,什么不会执行
**注意:
¥ 每个条件语句后面有个冒号
¥ 每个条件语句下面的缩进,就是为了让python解释器知道:条件满足后,要执行的代码究竟到什么位置。当然缩进四个空格只是推荐做法
你完全可以缩进1个、2个或者6个,甚至Tab键盘进行缩进。但是同一个条件语句下面对应的执行代码必须对齐。如果缩进一个空格,那么
都缩进一个,相邻的相同缩进距离的代码都是顺序执行的
4.2.2 else语句
也可以给if添加一个else语句,意思是,如果if后面的条件语句判断是False,不要执行if的内容,而是执行else的那部分
age = int(input("请输入年龄:"))if age >= 18:print("你成年了")else:print("你还是未成年人,不能上网!!!")
else语句对应下面要执行的代码缩进规则和if语句一致
4.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
4.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')
4.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)
**注意,里面的条件判断对应的执行代码再次缩进
4.3.流程控制:循环
判断和循环是两个最基本的控制程序执行的方式。上面我们讲了条件判断,现在来说说循环。所谓循环就是重复的执行某段代码段。可能会给循环设定一些条件
只有添加满足就不断循环,条件不满足时推出循环
4.3.1.while循环
python就采用while关键字来表示某个条件成立情况下,一直执行一些动作,如下:
while条件表达式
循环代码
**python中如果需要做不定次数的循环,建议使用while Ture这种结构,但python中没有do-while这种循环
li =[]whileTrue:
i= input('说:')if i != 'quit':
li.append(1)else:break()
我们要避免错误的死循环,可是死循环在特定场所也有其应用,像Liunx Shell这样人机交互程序,就是一个死循环,它循环等待用户输入命令,
执行,在等用户输入命令。在执行。
4.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 inlist_num:print(i)
4.3.3循环嵌套
在循环里面还有循环。这样子被称之为循环的嵌套。循环嵌套通常用来列出可能的组合性
如下:
boys = ['Mike','Jack','Tom']
girls= ['Lisa','Linda','Mary']for boy inboysfor girl ingirls:print('%s kiss %s' % (boy,girl))
嵌套循环,是从外层往内执行的。当内层的循环都执行完后,再继续执行外层循环。
4.3.4.range()函数
如果我们想计算1-10的整数之和,可以用sum变量做累加
sum =0for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum= sum +xprint(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(10000):
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.py5
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
05
10
15
结合range()和len()函数以遍历一个序列的索引,如下所示
se = ["google","Baidu","biying","sougou"]for i inrange(len(se)):print(i,se[i])#执行结果
D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/loop.py
0 google1Baidu2biying3 sougou
4.3.5.break和continue
break语句用来中止当前的循环。注意这里的用词:当前循环。因为循环可能会嵌套
print("break用法展示:")
sites= ["google","baidu","biying","sougou"]for site insites: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 insites: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
完成循环!!!
4.3.6 else和pass关键字
**else在循环结构中的应用,官方文档提示只有在break后,else不会被执行
#else关键字
li = ["hello","你好","哈哈大笑","吃饭","123"]for i inli:if i == "吃饭":print("不表演了,妈妈叫你吃饭了!!!")break
else:print("完成!")
执行结果发现:当break后,else里面的代码并没有执行,如果没有else,一定会在后台打印完成
**pass关键字
pass是为了使空结构的结构体能够顺利通过解释器编译的关键字,可以在循环结构、分支结构、函数
类等结构中使用
li = ["hello","你好","哈哈大笑","吃饭","123"]for i inli:if i == "吃饭":print("不表演了,妈妈叫你吃饭了!!!")break
elif i == "你好":pass
4.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 inpay]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)