龙空技术网

1.6「Python」第六章 控制语句

猪弟爸爸 192

前言:

此刻同学们对“c语言用星号输出等腰三角形”都比较重视,小伙伴们都想要剖析一些“c语言用星号输出等腰三角形”的相关内容。那么小编也在网络上汇集了一些关于“c语言用星号输出等腰三角形””的相关资讯,希望同学们能喜欢,兄弟们快快来学习一下吧!

人工智能入门与实战第一季: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 = 59if 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 = 80assessment = "优秀" 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的listlists = 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 onnot found,go onnot found,go onnot found,go onhaha,i found it

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

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

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

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

else语句

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

while 条件表达式:    条件表达式成立,执行此代码块1else:    条件表达式不成立,执行此代码块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 = 0for 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:namekey:agekey:sexvalue:tomvalue:18value:malekey:name,value:tomkey:age,value:18key: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、列表、字典等等的结合使用。

我是猪弟爸爸,这里我会持续更新人工智能自学内容,我们下节见。

标签: #c语言用星号输出等腰三角形