ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1.6 第六章 控制语句

2020-01-13 10:42:42  阅读:401  来源: 互联网

标签:语句 1.6 else print range 循环 举例 第六章


人工智能入门与实战第一季:python基础语法

控制语句包含条件控制语句和循环语句,任何编程语言都是如此,用来控制代码的执行逻辑,我们在第二章讲比较运算符的时候就提到了条件语句。

前面我们学习了各种各样的数据类型、各种运算,那么本章的控制语句将结合他们从而形成我们想要的程序。

条件语句

条件语句通过判断条件是否成立,来决定执行哪个分支,根据分支的多少可以分为单分支、双分支、多分支。

单分支:

双分支结构:

多分支结构:

单分支结构

if…
举例:输入一个数,判断是否是偶数

num = int(input("请输入一个整数:"))
if num % 2 == 0:
    print("%d 是 偶数" % num)

双分支结构

if…else…
举例:输入一个数,判断是奇数还是偶数

num = int(input("请输入一个整数:"))
if num % 2 == 0:
    print("%d 是 偶数" % num)
else:
    print("%d 是 奇数" % num)

多分支结构

多分支结构在程序的开发过程中是非常常见的形式,因为多分支的场景非常多: if…elif…else…

多分支结构中只能有一个if和一个else,但是可以有多个elif

举例:使用第二章的作业举例

'''
某小学考试评优三个等级:
1、80分(含)以上:优秀
2、60-79分:一般
3、60以下:不及格
小明数学考试得了59分,打印出小明的评优结果
'''
score = 59

if score > 80:
    print("优秀")
elif score > 60:
    print("及格")
else:
    print("不及格")

条件语句的嵌套

条件语句的嵌套即在if或else的分支里再嵌入if…else…分支
举例:模拟用户注册时用户名和密码校验

name = input("请输入用户名:")
pwd = input("请输入密码:")

if len(name) == 0 or len(pwd) == 0:
    print("用户名或密码为空,请重新输入")
else:
    # 以下为嵌套的条件语句
    if len(pwd) < 4:
        print("密码位数太短")
    else:
        # 提交处理...
        print("提交成功")

注意python和其他编程语言在语法上不太一样,if和else之后别忘了加冒号:

使用条件语句的嵌套注意不易嵌套层数过多,一个是影响代码执行效率,一个是降低了代码的可读性。

三元条件运算

格式如下:

条件为真时的值 if 条件表达式 else 条件为假时的值

三元条件运算可以理解成双分支结构的简写,在所有语言中几乎都有类似的三元运算。

举例:

score = 80
assessment = "优秀" if score > 90 else "一般"
print(assessment)

输出结果:
一般

条件语句通常与比较运算、逻辑运算配合使用,这些内容在第二章已讲解。

本节对应源文件:se1_ch6_case_control.py

循环语句

循环语句是指在符合某个条件的情况下,重复执行一个代码段。

循环语句执行过程:表达式为True,则执行循环体,循环体执行完之后再次判断表达式,如果为True,则继续执行循环体,否则结束循环。

Python中的循环语句有while和for

while循环

语法格式

while 条件表达式:
		代码块

举例:求1-100的整数和

n = 1   # n代表从1到100的整数
s = 0   # s用来存储所求的和
while n <= 100:    # 如果n小于等于100,就会继续执行循环语句
    s = s + n      # 每一次循环时加上一个整数
    n = n + 1      # 每次循环结束n变成下一个整数

print(s)

输出结果:
5050

for循环

同样以“求1-100的整数和“为例,我们看使用for循环如何处理:

s = 0
# 我们在前面讲序列range时说range的一个使用场景是配合for循环
# 以下使用range会生成1-100个整数,依次从range中取出1-100的数,存储到n中
for n in range(1, 101):  
    s += n  # 每次把n的值加起来,存到s中
print(s)

输出结果:
5050

循环嵌套

前面我们讲到了条件语句的嵌套,循环也是可以嵌套的,循环嵌套就是在循环语句中再嵌套循环语句。

举例:打印出某个年级所有班级的学生名称

# 我们创建了一个二维列表,代表某个年级,二维列表中的每一个元素又是一个列表,代表一个班级
lists3 = [
    ['a', 'b', 'c', 'd'],
    ['e', 'f', 'g', 'h'],
    ['i', 'j', 'k', 'l']
]

for cls in lists3:
    for name in cls:
        print(name, end=',')    # 在一行输出,以逗号隔开

输出结果:
a,b,c,d,e,f,g,h,i,j,k,l,

以上的循环嵌套是以for循环举例的,是一个基础的案例,你可以尝试一下稍带点难度的循环嵌套,比如打印我们熟悉的九九乘法表。

continue语句

continue语句会经常出现在循环语句中,它的作用是结束本次循环,继续下一次循环,如果有循环嵌套的话,结束最近一层的本次循环,举个例子你就懂了。

举例:有一个1-100的列表,希望打印出列表中所有的偶数。

# 使用range生成一个1-100的list
lists = list(range(1, 101))
print(lists)
for x in lists:
    if x % 2 != 0:   
        continue    

    print(x)

如果x不是偶数的话,就结束本次循环,继续下一次循环,所以如果x不是偶数的话,后面的语句print(x)就不会执行了。

continue语句可以使用在for或while循环中,以上仅在for循环中举例。

break语句

break语句放在循环语句中,表示结束整个循环,如果有循环嵌套的话,结束最近一层的整个循环。

举例:假设某个班级有n个学生,现在让你找一下班级里有没有叫judy的小同学(我们使用for循环举例)

lists2 = ['jordan', 'kobe', 'james', 'yao','judy', 'bob', 'beckhanm']
for name in lists2:
    if name == 'judy':
        print('haha,i found it')   
        break
    print('not found,go on')

输出结果:
not found,go on
not found,go on
not found,go on
not found,go on
haha,i found it

当第5次找到后,执行了break语句,结束了整个循环。

这里使用break语句很重要,尤其数据量大的情况下,避免执行无效的循环,造成资源的浪费。

当然break也有其他使用场景,这里就不举例了。总之记住break语句是用来结束整个循环的。

break语句可以使用在for或while循环中,以上仅在for循环中举例。

else语句

1、while循环中使用else语句
格式如下:

while 条件表达式:
    条件表达式成立,执行此代码块1
else:
    条件表达式不成立,执行此代码块2

举例:把上述“求1-100的整数和”改造一下

n = 1   # n代表从1到100的整数
s = 0   # s用来存储所求的和
while n <= 100:    
    s = s + n      
    n = n + 1      
else:
    print('完成求和计算,结果为:%d' % s)

输出结果:
5050

2、for循环中使用else语句
格式如下:

for 变量 in 可迭代对象:
    循环体 
else:
    for循环结束,执行此代码块

仍然以“求1-100的整数和”举例

s = 0
for n in range(1, 101):
    s += n  # 每次把n的值加起来,存到s中
else:
    print('完成求和计算,结果为:%d' % s)

输出结果:
5050

for循环与序列

这部分已经不属于新的知识点了,算是总结吧。

for循环与list的使用在上述循坏嵌套、continue语句、break语句中已经讲解。

for循环与range的使用在上述使用while循环求和、使用for循环求和已经讲解。

for循环与tuple的使用,这个请参考for循环与list、range的使用,
自己尝试来写个小例子。

所以我们可以发现for循环可以与任何可迭代对象配合使用,即:

for 变量 in 可迭代对象:
    循环体

啥是可迭代对象?list、tuple、range都是可迭代对象。

for循环与字典、集合

for循环与字典举例:

student = {'name':'tom', 'age':18, 'sex':'male'}

# 输出字典所有的键
for key in student.keys():
    print('key:%s' % key)

# 输出字典所有的值
for value in student.values():
    print('value:%s' % value)

# 输出字典键和值
for key, value in student.items():
    print('key:%s,value:%s' % (key, value))

输出结果:
key:name
key:age
key:sex
value:tom
value:18
value:male
key:name,value:tom
key:age,value:18
key:sex,value:male

for循环与集合举例:

set1 = {1,2,3,4,5}
for x in set1:
    print(x, end=' ') 
# 使用end=' ' 表示在同一行输出,以空格隔开

输出结果:
1 2 3 4 5

推导式生成序列、字典、集合

简单来说就是通过已有的可迭代对象(比如list、range、tuple),来生成新的序列、字典、集合,本质上是利用了for循环创建序列、字典、集合的简写形式。

列表推导式

我们在前面讲解创建列表list的时候,其中一种创建方式就是通过列表推导式创建,不知你还是否记得?

语法格式:

[表达式 for 变量 in 可迭代对象] 
[表达式 for 变量 in 可迭代对象 if 条件判断]

这里偷个懒,我把前面的例子拿过来:

list3 = [1,2,3,4]

#通过list3生成一个新的列表list4 
list4 = [x for x in list3]

#把list3中的数乘以2再存到list5中
list5 = [x*2 for x in list3]
print(list4)
print(list5)

#思路扩展:找出list3中的偶数
list5_even = [x for x in list3 if x % 2 == 0]
print(list5_even)

输出结果:
[1, 2, 3, 4]
[2, 4, 6, 8]
[2, 4]

字典推导式

语法格式:

{key_expression : value_expression for 表达式 in 可迭代对象} 

通过推导式创建字典,我们把字典那一节的例子拿过来改造一下:

keys = ['name', 'age', 'sex']
values = ['jerry', 18, 'female']
student = {k : v for k, v in zip(keys, values)}
print(student)

输出结果:
{‘name’: ‘jerry’, ‘age’: 18, ‘sex’: ‘female’}

zip(keys, values) 的作用:
把列表keys、values打包成一个元素为元组的列表:[(‘name’, ‘jerry’), (‘age’, 18), (‘sex’, ‘female’)]

集合推导式

语法格式:

[表达式 for 变量 in 可迭代对象] 
[表达式 for 变量 in 可迭代对象 if 条件判断]

举例:把集合中数平方,生成新的集合

sets = {1,2,3,4,5,6}
sets_square = {x**2 for x in sets}
print(sets_square)

输出结果:
{1, 4, 36, 9, 16, 25}

推导式总结:不管是列表推导式、字典推导式、集合推导式均大同小异:
1、要有for循环
2、for循环中要使用可迭代对象,比如列表、元组、range、集合

本章对应的源文件:
se1_ch6_case_control.py
se1_ch6_circulation.py

本章作业

1、创建一个列表list1,list1中存储1-100的整数,然后使用列表推导式找出list1中的奇数,存储到list2中。
2、使用循环语句打印出由星号*组成的一个等腰三角形。

本章总结

本章讲的控制语句可以理解成程序的骨架,然后把我们前面学习到的数据类型、运算填充进去就成了真正的程序。我们记住几种常用的控制语句,一个是条件语句,一个是循环语句。然后再学会这两种控制语句与数据类型的结合使用,比如for循环与range、列表、字典等等的结合使用。

我是猪弟爸爸,这里我会持续更新人工智能自学内容,有问题请关注我的公众号zhudipapa,我会统一在公众号下方回复,同时你也可以第一时间收到我的推文,我们下节见。

zhudipapa 发布了7 篇原创文章 · 获赞 1 · 访问量 54 私信 关注

标签:语句,1.6,else,print,range,循环,举例,第六章
来源: https://blog.csdn.net/zhudipapa/article/details/103953344

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有