控制结构就是控制程序执行顺序的结构。

  Python 有三大控制结构,分别是顺序结构分支结构(选择结构)以及循环结构。任何一个项目或者算法都可以使用这三种结构来设计完成。这三种控制结构也是结构化程序

设计的核心,与之相对的是面向对象程序设计。有名的 c 语言就是结构化语言,而 c++、 Java 或者 python 等 都是面向对象的语言。

  顺序结构

  顺序结构就是按照你写的代码顺序执行,也就是一条一条语句顺序执行。这种结构的逻辑最简单,就是按顺序执行就行了。

  分支结构(选择结构)  

  分支结构又称为选择结构,意思是程序代码根据判断条件,选择执行特定的代码。如果条件为真,程序执行一部分代码;否则执行另一部分代码。

  在 Python 语言中,选择结构的语法使用关键字 if、 elif、 else 来表示,具体语法如下:

  基本语法有一下几种:

  1、if

  2、if...else

  3、if...elif...else

  4、if...elif...elif......else

  5、if 嵌套

# 分支结构
# if
a = 1
if a == 1:
print('此时a等于1') # if...else
a = 2
if a == 1:
print('此时a等于1')
else:
print('此时a不等于1') # if...elif...else
a = 2
if a == 1:
print('此时a等于1')
elif a == 3:
print('此时a等于3')
else:
print('此时a等于2') # if...elif...elif...else
a = 2
if a == 1:
print('此时a等于1')
elif a == 3:
print('此时a等于3')
elif a == 4:
print('此时a等于4')
else:
print('此时a等于2') # if嵌套
a = 2
b = 5
if a == 2:
if b == 3:
print('此时a等于2,b等于3')
else:
print('此时a等于2,b不等于3')
else:
print('此时a不等于2')

  循环结构

  循环结构是使用最多的一种结构。循环结构是指满足一定的条件下,重复执行某段代码的一种编码结构。Python的循环结构中,常见的循环结构是for循环while循环

  for循环
  for 循环为循环结构的一种。在 Python 中,for 循环是一种迭代循环,也就是重复相同的操作,每次操作都是机遇上一次的结果而进行。 for 循环经常用与便利字符串、列表、字典等数据结构,for循环需要知道循环的次数。基本语法是:

  for...in...:

  例子:

# 利用了遍历字符串
str_data = 'Now is better than never'
count = 0
for str_d in str_data:
# print("遍历字符串: ",str_d)
#统计字符串中 e出现的次数
if str_d == 'e':
count +=1
print(count)

  遍历整个列表:

  遍历整个列表是利用 for 循环得到列表中的每一个元素值,然后执行相同的操作。但同时需要用到 index 和 value 值的时候, python 利用 enumerate()函数。 函数enumerate()

的参数为可遍历的变量,如字符串,列表等均可,返回 enumerate 类。

# 例子1、遍历列表
name_sanguo = ['曹操','孙权','刘备','诸葛孔明','周瑜','关羽','张飞']
print(F"列表元素有: {name_sanguo}")
#对列表中每一个元素执行相同的操作
for name in name_sanguo:
#print(name.title()+' 是《三国演义》中的角色名字。 ')# title()方法是返回字符串首字母大写,如果不以字母开头的,则全部为大写,在这里title()的意义并不大
print(name + ' 是《三国演义》中的角色名字。 ')
'''
结果为:
列表元素有: ['曹操', '孙权', '刘备', '诸葛孔明', '周瑜', '关羽', '张飞']
曹操 是《三国演义》中的角色名字。
孙权 是《三国演义》中的角色名字。
刘备 是《三国演义》中的角色名字。
诸葛孔明 是《三国演义》中的角色名字。
周瑜 是《三国演义》中的角色名字。
关羽 是《三国演义》中的角色名字。
张飞 是《三国演义》中的角色名字。
'''
# 例子2、使用 enumerate()函数得到索引和值,此方式经常被使用
for index,name in enumerate(name_sanguo):
print(name + f'是《三国演义》里的第{index + 1}个人物')# 加1是因为python计数是从0开始的
'''
结果是:
曹操是《三国演义》里的第1个人物
孙权是《三国演义》里的第2个人物
刘备是《三国演义》里的第3个人物
诸葛孔明是《三国演义》里的第4个人物
周瑜是《三国演义》里的第5个人物
关羽是《三国演义》里的第6个人物
张飞是《三国演义》里的第7个人物
'''

  for循环创建数值列表:经常用到,因为列表非常适合用于存储数字集合。常常使用list(range())的方法来创建一个列表。注意range(star,end,step)中,包头不包尾,即从star开始

(可省略,省略时候默认为0开始),到end-1结束,不包含end,step为步长(可省略,省略默认为1)。

#生成数字序列
for i in range(0,11,2):
print(F"10以内的偶数是 {i}")
'''
结果是:
10以内的偶数是 0
10以内的偶数是 2
10以内的偶数是 4
10以内的偶数是 6
10以内的偶数是 8
10以内的偶数是 10
'''
#len()求列表的长度,当列表不知道长度的时候,使用
b = []
a = [1,3,4,5,3,7,8,43,43,5,5,66,7,43,22,11,34]
for i in range(len(a)):
b.append(a[i] * 2)
print('列表a的值为:',a)
print('列表b的值为:',b)
'''
结果是:
列表a的值为: [1, 3, 4, 5, 3, 7, 8, 43, 43, 5, 5, 66, 7, 43, 22, 11, 34]
列表b的值为: [2, 6, 8, 10, 6, 14, 16, 86, 86, 10, 10, 132, 14, 86, 44, 22, 68]
'''
#list() + range()= 数值列表
even_numbers = list(range(2,11,2))
print(even_numbers)
'''
结果为:
[2, 4, 6, 8, 10]
'''

  for循环创建列表解析 :列表解析是将 for循环和创建新元素的代码合并成一行,在实际应用中较为常见。语法为:变量名 = [变量名 2表达式 for 变量名 2 in 序列]

# 生成10以内数的平方数
squares = [value**2 for value in range(1,11)]
print('生成10以内数的平方数:',squares)
'''
结果为:
生成10以内数的平方数: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
'''

  遍历字典:

  字典中的键值对可能有上百万个。 Python 支持使用 for 循环遍历字典,包括遍历所有键值对(使用 items()方法)、遍历字典中的所有键(使用 keys()方法)以及遍历字典中

的所有值(使用 values()方法)。

  

# 遍历字典
name_money = {'王老师':30000,'侯老师':28000,'李老师':33000,'张老师':25000}
#使用 for()循环遍历字典中的 key-value,方法 items()返回键值对列表
print("各个老师的月薪是:")
for key,value in name_money.items():
print(f'\t\t{key}的月薪是{value}元')
'''
结果是:
各个老师的月薪是:
王老师的月薪是30000元
侯老师的月薪是28000元
李老师的月薪是33000元
张老师的月薪是25000元
'''
#遍历字典中的所有键,使用方法 keys()
print('老师有:')
for name in name_money.keys():
print(f'\t{name}')
'''
结果是:
老师有:
王老师
侯老师
李老师
张老师
'''
#遍历字典中的所有值,使用的方法是 values()
print('老师们的月薪由以下结构组成: ')
for value in name_money.values():
print(f'\t\t\t{value}')
'''
结果是:
老师们的月薪由以下结构组成:
30000
28000
33000
25000
'''

  嵌套for循环:

# 例子
for i in range(0,4):
for j in range(0,7):
print("*",end="")
print(' ')
# 结果是:
'''
结果是:
*******
*******
*******
*******
'''

  接下来利用for循环做一两个小小的实际应用:

# 小项目实战1:生成九九乘法表
'''
项目描述:根据嵌套 for 循环生成九九乘法表
提示:
1、根据九九乘法表的规律,找到两个 for 循环的边界值 。
2、使用 range()函数生成数字集合
'''
for i in range(1,10):
for j in range(1,i + 1):
print(str(j) + '*' + str(i) + '=' + str(i*j) + ' ',end = "")
print(' ')
# 结果是:
'''
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
''' # 小项目实战2:打印星图
'''
*
***
*****
*******
*****
***
*
项目描述:使用 for循环打印上图
提示:
1、使用两个for循环
2、找对in后面的边界值,使用 range()
'''
n = 8
for i in range(1,n,2):
for j in range(i):
print('*',end = "")
print(' ')
for k in range(1,n,2):
for m in range(n-2-k):
print('*',end = "")
print(' ')
# 结果是:
'''
*
***
*****
*******
*****
***
*
'''

  while循环:

  while循环不需要知道循环的次数,即无限循环 ,直到条件不满足为止。

  注意: 

1、循环也是以冒号(:)结尾

2、条件为各种算术表达式,

a) 当为真时,循环体语句组 1,重复执行

b) 当为假是,循环体语句组 2,停止执行

3、如果循环体忘记累计,条件判断一直为真,则为死循环。循环体一直实行。

a) 死循环有时候经常被用来构建无限循环

b) 可以使用 ctrl+c 终止,或者停止 IDE

# 构造计数器,记录 5次
print('使用 while循环构造计数器,并且记录 5次')
count_number = 0
while count_number <=5:
print(f'当前数字是 {count_number}')
count_number += 1 # 循环下一次的值,如果忘记则为死循环
'''
结果是:
使用 while循环构造计数器,并且记录 5次
当前数字是 0
当前数字是 1
当前数字是 2
当前数字是 3
当前数字是 4
当前数字是 5
'''

  用户输入

  为了更好的体验,程序有时候使用用户输入。在 Python 中使用函数 input()让程序暂停工作,等待用户输入后接着执行。当使用该函数时,一定要指出清晰而易于明白的指示,

否则用户不知道要输入什么内容。

# 计算任意数的和, 并计算出平均数.当用户输入n时,退出
sum = 0.0
count = 0
more_data = "yes"
while "y" in more_data: # more_data[0] == "y":
x = int(input("Enter a number: "))
sum = sum + x
count = count + 1
more_data = input("Do you have more numbers (y or n)?")
print("\nThe sum of the number is",sum)
print("\nThe average of the number is", sum / count) '''
结果:
Enter a number: 89 Do you have more numbers (y or n)?y Enter a number: 56 Do you have more numbers (y or n)?n The sum of the number is 145.0 The average of the number is 72.5
'''

  break 与 continue 语句
  break 与 continue 语句可以在循环结构中使用,比如 for,while。

  break 语句是立即退出 while 循环,不再运行循环中余下的代码,也不管条件判断的结果是否为真。break 语句经常被用来控制程序执行流,也就是控制哪些代码可以执行,哪

些代码不执行。

  continue 语句是结束本次循环,返回到 while 语句开始的位置,接着条件判断。如果为真,程序接着执行,否则退出。也就是当循环或判断执行到 continue 语句时,continue 后

的语句将不再执行,会跳出当次循环,继续执行循环中的下一次循环。

两者的区别是
continue 语句跳出本次循环,只跳过本次循环 continue 后的语句

break 语句跳出整个循环体,循环体中未执行的循环将不会执行

#点名系统,一共 100个人。当数到 50的时候,ᨀ示以下;当数到 60时,停止报数
for i in range(101):
if i ==50:
print(f'你是第{i}名,请接着报数')
continue
if i == 60:
print(f'你是第{i}名,停止报数: end')
break
'''
结果是:
你是第50名,请接着报数
你是第60名,停止报数: end
'''

  使用while操作列表和字典

  列表和字典可以存储大量信息。 for 循环可以变量其每一个元素或者键值对,但是最好不要在 for 循环修改其值,否则导致 python 不能正常运行;如果遍历列表或字典的同时,

修改其值,可以使用 while 循环。

# 例子1:使用while操作列表
# 老师副教授竞选
# 首先创建一个列表,用来存放参加副教授评比的老师,其中侯老师不符合参选资格;
# 再创建一个空列表,用来收集已经获得副教授的称号的老师
fu_jiaoshou = ['张老师','吴老师','张老师','王老师','颜老师','侯老师']
fu_js = fu_jiaoshou.copy()
ru_xuan = []
# 使用循环,选择老师进行副教授评比,直到所有人评比结束
# 把符合副教授资格的收集起来,不符合的删除
while fu_jiaoshou:
pingxuan = fu_jiaoshou.pop()
print(f'正在参加副教授评选的是:{pingxuan}')
if '侯老师' in pingxuan:
print(f'{pingxuan}不具备资格参加副教授评选')
continue
else:
ru_xuan.append(pingxuan)
print('获得副教授称号的老师有:')
for index in ru_xuan:
print('\t'+index.title())
print('参加评选是以下老师:')
for index in fu_js:
print('\t'+index.title()) '''
结果:
正在参加副教授评选的是:侯老师
侯老师不具备资格参加副教授评选
正在参加副教授评选的是:颜老师
正在参加副教授评选的是:王老师
正在参加副教授评选的是:张老师
正在参加副教授评选的是:吴老师
正在参加副教授评选的是:张老师
获得副教授称号的老师有:
颜老师
王老师
张老师
吴老师
张老师
参加评选是以下老师:
张老师
吴老师
张老师
王老师
颜老师
侯老师
''' # 例子2:使用while操作字典
# 小项目实战3:创建自己的通讯录
'''
项目描述: 请为自己创建一个通讯录,效果如下图所示。要求,必须有欢迎界面和指令提示。
|---欢迎进入通讯录程序---|
|---1、 查询联系人资料---|
|---2、 插入新的联系人---|
|---3、 删除已有联系人---|
|---4、 退出通讯录程序---|
请输入指令代码:1
请输入联系人姓名: 刘德华
该联系人不存在!
请输入指令代码:2
请输入联系人姓名:刘德华
请输入联系人电话:136XXXXXXX
联系人加入成功!
请输入指令代码:2
请输入联系人姓名:杨幂
请输入联系人电话:177xxxxxxxxx
联系人加入成功!
请输入指令代码:1
请输入联系人姓名:杨幂
杨幂 : 177xxxxxxxxx
请输入指令代码:4
|---感谢使用通讯录程序---| 提示:
1、使用字典构建通讯录
2、使用 while 循环一直判断是不是进行
3、使用 if 语句判断指令类型。
'''
# 创建一个空的字典,用来存放通讯录
phone_book = {}
# 使用多行打印的方式,打印出欢迎界面
print('''
|---欢迎进入通讯录程序---|
|---1、 查询联系人资料---|
|---2、 插入新的联系人---|
|---3、 删除已有联系人---|
|---4、 退出通讯录程序---|''')
# 设置循环条件
num = True
i = int(input('请输入指令代码:'))
while num:
if i == 1:
name = input('请输入联系人姓名:')
if name in phone_book.keys():
print(f'{name} :{phone_book[name]}')
i = int(input('请输入指令代码:'))
else:
print('该联系人不存在!')
i = int(input('请输入指令代码:'))
elif i == 2:
name = input('请输入联系人姓名:')
phone_num = input('请输入联系人电话:')
phone_book[name] = phone_num
# 判断新添联系人是否成功
if name in phone_book.keys():
print('联系人加入成功!')
i = int(input('请输入指令代码:'))
else:
print('联系人加入失败!')
print('''
|---欢迎进入通讯录程序---|
|---1、 查询联系人资料---|
|---2、 插入新的联系人---|
|---3、 删除已有联系人---|
|---4、 退出通讯录程序---|''')
i = int(input('请输入指令代码:'))
elif i == 3:
name = input('请输入联系人姓名:')
if name in phone_book.keys():
del phone_book[name]
print(f'已从通讯录中删除 {name} 及其联系方式')
i = int(input('请输入指令代码:'))
else:
print('该联系人不存在!')
i = int(input('请输入指令代码:'))
elif i == 4:
print('|---感谢使用通讯录程序---|')
break
# 判断输入的指令是否在[1,2,3,4]中,如果不是,则让用户重新输入正确的指令
else:
print('输入的指令错误!')
i = int(input('请输入指令代码:'))
'''
结果是:
|---欢迎进入通讯录程序---|
|---1、 查询联系人资料---|
|---2、 插入新的联系人---|
|---3、 删除已有联系人---|
|---4、 退出通讯录程序---|
请输入指令代码:1
请输入联系人姓名: 刘德华
该联系人不存在!
请输入指令代码:2
请输入联系人姓名:刘德华
请输入联系人电话:136XXXXXXX
联系人加入成功!
请输入指令代码:2
请输入联系人姓名:杨幂
请输入联系人电话:177xxxxxxxxx
联系人加入成功!
请输入指令代码:1
请输入联系人姓名:杨幂
杨幂 : 177xxxxxxxxx
请输入指令代码:4
|---感谢使用通讯录程序---|
'''

Python基础知识之4——三大控制结构的更多相关文章

  1. Python 基础 面向对象之二 三大特性

    Python 基础 面向对象之二 三大特性 上一篇主要介绍了Python中,面向对象的类和对象的定义及实例的简单应用,本篇继续接着上篇来谈,在这一篇中我们重点要谈及的内容有:Python 类的成员.成 ...

  2. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  3. python基础知识(二)

    以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍

  4. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  5. python基础知识讲解——@classmethod和@staticmethod的作用

    python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...

  6. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  7. python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

  8. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

  9. Python基础知识(五)

    # -*- coding: utf-8 -*-# @Time : 2018-12-25 19:31# @Author : 三斤春药# @Email : zhou_wanchun@qq.com# @Fi ...

随机推荐

  1. NX二次开发-设置WCS显示UF_CSYS_set_wcs_display

    NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //设置WCS显示 //1显示WCS, 0不显 ...

  2. Gym101981D - 2018ACM-ICPC南京现场赛D题 Country Meow

    2018ACM-ICPC南京现场赛D题-Country Meow Problem D. Country Meow Input file: standard input Output file: sta ...

  3. 转-Windows下anaconda简单使用教程

    转自:https://www.cnblogs.com/Dota-wiki/p/7871838.html Anaconda is a completely free Python distributio ...

  4. unity 移动

    上下左右平移 void Start() { QualitySettings.vSyncCount = ; Application.targetFrameRate = ;//控制帧数 } // Upda ...

  5. LeetCode 445. Add Two Numbers II (两数相加 II)

    题目标签:Linked List 题目给了我们两个 数字的linked list,让我们把它们相加,返回一个新的linked list. 因为题目要求不能 reverse,可以把 两个list 的数字 ...

  6. WebStorm+Node.js开发环境的配置

    1 下载地址:  webstorm:http://www.jetbrains.com/webstorm node.js:https://nodejs.org/download/ 2 安装node.js ...

  7. Linux下core文件调试

    1,ulimit -a查看默认参数 2,ulimit -c 1024 设置core文件大小,如果超过1024个blocks,则不会产生core文件 注:tune2fs -l /dev/sda8 输出分 ...

  8. 【ARC073F】Many Moves

    题目 一个显然的\(dp\),设\(dp_{i,j}\)表示其中一个棋子在\(x_i\)点,另一个棋子在\(j\)点的最小花费 显然\(dp_{i,j}\)有两种转移 第一种是把\(x_i\)上的棋子 ...

  9. iOS音频开发系列-概述篇

    概述 iOS中对于音频的处理,苹果提供了两个库. AVFoundation AudioToolbox 在iOS系统中apple对上述的流程进行了封装并提供了不同层次的接口

  10. dubbo重连机制会不会造成错误

    dubbo在调用服务不成功时,默认会重试2次. Dubbo的路由机制,会把超时的请求路由到其他机器上,而不是本机尝试,所以 dubbo的重试机器也能一定程度的保证服务的质量. 但是如果不合理的配置重试 ...