第4章 选择结构与循环结构

合集下载

004第4章结构化程序设计

004第4章结构化程序设计

4.3.1 条件语句
if (InputScore >= 70) { if (InputScore >= 80) { if (InputScore >= 90) { OutputScore = "优秀"; //优秀 } else { OutputScore = "良好"; //良好 } } else { OutputScore = "中等"; //中等 } }
if (Score >= 60) { Console.WriteLine("该成 绩合格。"); } else { Console.WriteLine("该成 绩不合格。"); } }
}
4.3.1 条件语句

如果程序的逻辑判定关系比较复杂,可以用if…else嵌套语句 形式如下: if(表达式1) if(表达式2) if(表达式3) ... 语句1; else 语句2; else 语句3; else 语句4;
}
4.3.1 条件语句

2. if…else语句 if…else语句是一种更为常用的选择语句。if…else语 句的语法如下: if(表达式) { 语句块A; }
else
{ 语句块B; }
【例4-3】根据输入的学生
成绩Score的值,显示 其是否及格。
using System; class Score { static void Main() { Console.WriteLine("请您 输入学生成绩:"); int Score = int.Parse(Console.ReadLi ne());//转换为整数

【例4-4】假设考查课的成绩按优秀、良好、中等、及格和不及

C语言程序第4章 基本流程结构

C语言程序第4章 基本流程结构

问题:输入两个整型数据,按照从大到小的顺序输出。 代码: #include<stdio.h> int main(void) { int a,b,t; printf("请输入两个整型数据a,b:\n”); /*输出提示*/ scanf("%d%d",&a,&b); printf("交换前:a=%d,b=%d\n",a,b); /*输出交换前的次序*/ if (a<b) {t=a;a=b;b=t;} /*当a<b时交换次序*/ printf("交换后:a=%d,b=%d\n",a,b); /*输出交换前的次序*/ return 0; }
语句1
语句2

语句n
顺序结构流程图 4-1
问题:输入两个字符型数据,将它们交换后输出。(如输入ab,输出则为ba)
代码: #include<stdio.h> int main(void) { char a,b,t; printf(“请输入两个字符型数据到变量a和b:\n”); /*输出提示*/ scanf(“%c%c”,&a,&b); /*输入两个字符数据*/ printf(“交换前变量a=%c,b=%c\n”,a,b); /*输出交换前a、b的值*/ t=a,a=b,b=t; /*实现交换*/ printf(“交换后的结果是:a=%c,b=%c\n”,a,b); /*输出交换后a、b的 值*/ return 0; }
第4章 基本流程结构
在本章的学习过程中,将详细介绍C语言源程序的三 种基本程序结构:顺序结构、选择结构和循环结构以及C 语言中实现三种基本结构的语句学习目标
• 学习目标
• ◇编写顺序结构程序 • ◇掌握if和switch的用法 • ◇掌握for、while和do-while语句的用法 • ◇编写简单的综合流程程序

第四章选择和循环

第四章选择和循环
OF⊕SF= 0, 目的操作数≥源操作数 OF⊕SF= 1, 目的操作数<源操作数
对于无符号数: CF=0,目的操作数≥源操作数 CF= 1, 目的操作数<源操作数
16
假设存储器变量(X)= 80H,指令“CMP X, 5”执行后: ZF=0 (X)≠ 5 OF=0 减法操作没有产生溢出,SF是正确的结果符号位 SF=1 如果X中存放的是有符号数,X<5
7
(1)短转移
如果目的位置离开出发点很近,可以使用以下格式:
JMP
SHORT LABEL
其中“LABEL”是目的位置的标号。这种格式产生的机器指令代码最短,为2
字节。
100H:
JMP SHORT TWO
102H:
……
……
10CH: TWO: ……
指令“JMP SHORT TWO”汇编后产生的机器指令为“EB0A”。 “EB”是这种类型转移指令的“操作码”, “0A”是目的位置离开出发点的距离,10CH-102H=0AH。 由于用一个字节补码表示目的地址与当前地址的距离,所以转移范围为下
20
设(EDX)= 12345678H, (ECX)= 5
BT EDX, ECX ; 由于EDX寄存器D5=1,执行后CF= 1,EDX值不变
BT EDX, 2 ; 由于EDX寄存器D2=0,执行后CF= 0,EDX值不变
与BT指令类似的还有以下三条指令: BTS 目的操作数,源操作数 ;测试目的操作数的指定位,并把该位置为1 BTR 目的操作数,源操作数 ;测试目的操作数的指定位,并把该位置为0 BTC 目的操作数,源操作数 ;测试目的操作数的指定位,并把该位取反
假设已在数据段定义存储器单元“FAR_TGT”如下: FAR_TGT DD TWO

第四章 结构化程序设计的三种结构

第四章 结构化程序设计的三种结构

第四章结构化程序设计的三种结构4.1 顺序结构程序设计一、结构化程序设计的程序结构顺序结构、分支结构/选择结构、循环结构二、C语言语句1、9种控制语句2、表达式语句3、特殊语句三、格式化输出--printf()函数printf()函数的作用:向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。

printf()函数的一般格式printf("格式字符串" [,输出项表]);1、"格式字符串"也称"转换控制字符串",可以包含三种字符(1)格式指示符。

格式指示符的一般形式如下:%[标志][宽度][.精度][F|N|h|L][类型]常用的标志字符如表3-1所示,常用的宽度指示符如表3-2所示,常用的精度指示符如表3-3所示,长度修饰符如表3-4所示,类型转换字符如表3-5所示。

(2)转义字符'\n'就是转义字符,输出时产生一个"换行"操作。

转义字符通常起控制作用(3)普通字符──除格式指示符和转义字符之外的其它字符。

格式字符串中的普通字符,原样输出。

例如printf("radius=%f\n", radius);语句中的"radius="是普通字符。

2.输出项表输出项表是可选的。

如果要输出的数据不止1个,相邻2个之间用逗号分开。

下面的printf()函数都是合法的:(1)printf("I am a student.\n");(2)printf("%d",3+2);(3)printf("a=%f b=%5d\n", a, a+3);必须强调:"格式字符串"中的格式指示符,必须与"输出项表"中、输出项的数据类型一致,否则会引起输出错误3、格式指示符输出不同类型的数据,要使用不同的类型转换字符。

第4章 C语言程序的基本控制结构

第4章 C语言程序的基本控制结构

#include<stdio.h> main() { int c1,c2; scanf("%c",&c); c1=c-1;c2=c+1; printf("%c%4c%4c\n",c1,c,c2); printf("%d%4d%4d\n",c1,c,c2); }
4.2 顺序结构
运行结果:
4.3选择结构
入口
入口
A 语句1 B

表达 式

条件 语句2 循环体
出口
图4.1 顺序结构
出口 出口
图4.2 选择(分支)结构 图4.3 循环结构
上述三种基本控制结构的共同特定是具有单入口和单出口。 还有一种goto语句,又叫转向语句,在本章的4.4.5小节中将会讲解到。 我们在编写程序时,力求使用前三种基本结构语句。
4.3选择结构
例4.3 幼儿园里三个小朋友站队要求小个站在前面,高个站在后面。 分析:我们可以把个子最小的小朋友放在a位置上,较高的小朋友放在b位 置上,个子最高的小朋友放在c位置上。输入三个数,a,b,c,要求按由小到 大的顺序输出。先比较a和b,若a大于b,则a与b对换,再比较a和c,若a 大于c,则a与c对换,这时a的值是最小的,最后比较b和c,若b大于c,则b 与c对换。这样操作之后就使a<b<c的关系成立。然后顺序输出a,b,c既可。
! 逻辑非,单目运算符,自右至左结合。其运算规则是:当 运算量为0,运算结果为1;反之,当运算量为1,运算结果为0。 && 逻辑与,双目运算符,自左至右结合。其运算规则是: 只有当运算符两边的运算量都是非0时,运算结果才为1,否则为0。 || 逻辑或,双目运算符,自左至右结合。其运算规则是:只 要运算符两边的运算量有一个为为非0,运算结果就为1。只有两 个运算量都为0,结果才是0。 这三个运算符的优先级,逻辑非!最高,逻辑与&&次之,逻 辑或||最低。!(逻辑非)的优先级高于算术运算符和关系运算符, 而&&(逻辑与)和||(逻辑或)的优先级低于算术运算符和关系运算符。 由 此可见: a>b&&c>d 相当于 (a>b)&&(c>d) a= =0||b= =0 相当于 (a= =0)||(b= =0) !a&&b= =c 相当于 (!a)&&(b= =c)

第四章 循环结构程序设计

第四章 循环结构程序设计

while(i<=100)
{ i++;
程序运行结果: sum=5050
sum=sum+i;
}
6
4.3 do-while语句
do-while语句的结构 do 语句 while(表达式);
例如: do
x-=1; while(x>0);
功能:
1)执行“语句”。 2)计算“表达式”的值。如果值为非0,转1);否则转3)。
}
8
4.3 do-while语句
1)循环体如果包含一个以上的语句,要用复合语句表示。 2)在循环体中应有使循环趋于结束的语句。 3)while语句的特点是先执行循环体,然后判断表达式的值。 4)一般情况下,用while语句和用do-while语句处理同一 个问题时,若二者的循环体部分一样,其结果也一样。但如
18
4.7 goto语句以及用goto语句构成循环结构
goto语句的一般格式:
goto 语句标号;
例如: goto loop;
功能:程序执行到goto语句时,将程序流程转到语句标号指定的 语句去执行。
有标号的语句的格式:
语句标号: 语句
例如: loop: sum=sum+i;
19
4.7 goto语句以及用goto语句构成循环结构
【例4-9】用goto语句实现求1~100累加和。
#include <stdio.h>
main() { int n=1, sum=0; loop: sum += n; n++;
if(n<=100) goto loop;
printf("sum=%d\n",sum); }

选择结构和循环结构

选择结构和循环结构

课程:多媒体软件设计技术
教师: 杨岚
学生: 06自动化
说明: “测试表达式”可以是数值型,也可以是字符串型 Case后的“表达式表”的形式可以是以下三种形式: 1. 一个表达式,或者是用“,”隔开的多个表达式 如:case 1 或 case 1,3,5 2. 表达式:n1 to n2 Case 1 to5 等价于case 1,2,3,4,5 Case “a” to “z” 3. Is 关系运算符 表达式 case is>=10 以上三种形式可以混和使用,用“,”隔开 如:case 1,3,”a”to “z”,is>=10 “测试表达式”的类型应于case后的表达式类型一致 “测试表达式”的最终结果只能有一个 Csae 后的“表达式表”不能是变量和布尔运算符 如:case x>0 and x<100 case is >0,is<100 case 0 to 100
说明:
单行结构条件语句应作为一条语句书写,若要分行,必须用续 行符。 语句组中的语句可以有多条,中间用“:”隔开,不能分行写。
课程:多媒体软件设计技术
教师: 杨岚
学生: 06自动化
例5-1 根据公式计算函数y的值, 要求:用inputbox函数输入变量x,用文本框输出y。 单行结构 条件语句
课程:多媒体软件设计技术
教师: 杨岚
学生: 06自动化
例5-8 求一元二次方程的解 一元二次方程 要求分析: 1. 输入a、b、c的值,用什么方法? 2. 系数不同,求解的公式不一样,解决的方法也不一样; 3. 用什么语句最容易解决问题?
例5-9 四则运算 四则运算 要求分析: 1. 在text1中输入符号,label2中立即出现该运算符,实现? 2. “出题”,产生两个随机数; 3. “计算”功能如何实现?判断表达式中的运算符,根据运 算符采用不同的计算方法。 4. “判断”功能如何实现?根据运算符,判断text4中的结果 是否和用表达式计算的结果一致。

Chapter4选择结构与循环结构.ppt

Chapter4选择结构与循环结构.ppt
print("您的体型偏瘦!")
elif BMI < 24.9: print("恭喜您,健康!")
elif BMI < 29.9: print("您已超重!")
else: print("您已超过正常指标!")
5/18/2020
25
4.2 循环结构
2020/5/18
2020/5/18
26
问题
假如需要显示一个字符串100次(例如,”Programming is fun”)。 解决方法1. 直接输入这个语句100次: “Programming is fun!” “Programming is fun!” 。。。 “Programming is fun!” 解决方法2. 使用循环语句
print("Invalid Input !")
else:
area = radius * radius * math.pi
# Compute area
perimeter = 2 * radius * math.pi
# Compute perimeter
print("The area of the circle is",area)
2020/5/18
27
4.2.1 while循环
while循环结构的语法形式为:
while 条件表达式: 循环体
[else: else子句代码块]
2020/5/18
28
ex4-4显示字符串100次。 Count = 0 While count <100:
print(“Programming is fun!”) count += 1

第4章VisualBasic程序控制结构

第4章VisualBasic程序控制结构
Private Sub Form_Click() Dim L As Single, s As Single,v As Single r = 1.8: h = 4 Const pi = 3.14159 L = 2 * pi * r s = pi * r * r v=s*h Print "圆周长="; Format(L, "0.000") Print "圆面积="; Format(s, "#.###") Print "圆柱的体积="; Format(v, "#.###") End Sub
4.1.3注释语句
为了提高程序的可读性,通常应在程序的适当位置加上必要的注释,
Visual Basic中的注释是“Rem”或“’”,一般格式为:
Rem

例如:Rem 交换变量a和b的值
c = a ´c
a = b:b = c
说明:
注释语句是非执行语句,仅对程序的有关内容起注释作用,它不
被解释和编译,但在程序清单中能被完整地列出。
赋值语句是在任何程序设计中最基本、最常用的语句。 它的作用是把计算右边表达式的运算结果赋值给左端的变量,Visual Basic使用赋值号“=”来赋值。
格式: [Let] 变量名=表达式 [Let] [<对象名.>]<属性名>=<表达式> 其中:Let表示赋值语句的关键字,通常可以省略。 功能:赋值语句具有计算和赋值的双重功能,它首先计算右端 的表达式,并把结果赋值给左边的变量,Visual Basic使用赋值号“=” 来赋值。 表达式:其类型应与变量名的类型一致,即同时为数值型或同 时为字符型等等。当两边同为数值型,但精度不同时,强制转换成 左边的精度,然后赋值。

第4章 选择和循环结构程序设计

第4章 选择和循环结构程序设计

关系表达式的值是一个逻辑值,即“真”或“假”。例 如,关系表达式“ 5==3” 的值为“假”,“ 5>=0” 的值 为“真”。C语言以1代表“真”,以“0” 代表“假”。 例如,a=3,b=2,c=1,则:
关系表达式“a>b”的值为“真”,表达式的值为1。 关系表达式“(a>b )==c”的值为“真(因为a>b的值为
第4章 选择和循环结构程序设计
个语句可分写成多行,只要未遇到分号就认为 还在同一个语句中;反之,在一行中也可以写 多个语句。也就是说 C 程序的书写是相当自由 的。不过为了醒目起见,最好一行只写一条语 句,并且根据不同的语法成份,错落有致地加 以排列会更好地增加程序的可读性。本章我们 将主要讲述选择和循环语句,这是 C 语言语句 中的重点。在学习一种语句时,要对其使用的 语法规则、语义含义等深刻理解,灵活运用。 表4.1中先给出C语句的全貌。
第4章 选择和循环结构程序设计
关于优先次序:
( 1 )前 4 种关系运算符( < , <= , > , >= )的优先级别相 同,后两种也相同。前 4 种高于后 2 种。例如, <= 优先 于“!=”。而“>”与“<=”优先级相同。 (2)关系运算符的优先级低于算术运算符。 (3)关系运算符的优先级高于赋值运算符。 例如: c>a+b a>b==c a==b<c a=b>c 等效于c>(a+b) 等效于(a>b)==c 等效于a==(b<c) 等效于a=(b>c)
第4章 选择和循环结构程序设计
4.1 语句概述
语句是程序的重要组成部分,它代表程序执行的 步骤,实现着程序的意图。C语言属于过程式语言,在 这种语言中,围绕一个程序目标所要采取的每一步行 动都必须由语句一一体现出来。简单地说,一个程序 中包含了两部分信息,一部分是数据,另一部分是对 数据的操作,这些操作是由语句来实现的。 C 语言中,语句的含义也非常广泛。任何数据成 份,只要以分号结尾,就称为语句,甚至只有一个分 号也称为语句(空语句)。分号是C语言中的标志。一

Python程序设计 第4章 循环结构程序设计(第6次课)

Python程序设计 第4章 循环结构程序设计(第6次课)
(2)假设1个班级中有n名同学,统计男同学和女 同学各有多少名。该问题的求解需要重复执行n次, 对每1个同学依次进行判断,同时统计男同学和女 同学的人数。
Copyright © SWFU-CISD, 2012. All rights reserved. 1-8
计算机编程导论
4.2 循环结构概述
(3)给定2个整数,求它们的最大公约数和最小 公倍数。例如:给定6和9,求最大公约数时, 循环过程从6依次பைடு நூலகம்减至1,当循环到3时,判 断得6和9都能被3整除,于是终止循环,求得 最大公约数是3.;求最小公倍数时,循环过程 从9依次递增至54,当循环到18时,判断得18 同时能被6和9整除,于是终止循环,求得最小 公倍数是18。
练习: 1. 求1+3+5+…+99 2. 求2*4*6*…*12
Copyright © SWFU-CISD, 2012. All rights reserved.
1-21
计算机编程导论
第6次上机作业: 1.计算,参考值: S=1.718282 1 1 1 S 1 1*2 1*2*3 1*2*3*50 2.编程求斐波拉契数列的前20项,已知该数列 的第一、二项分别是0、1,从第三项开始,每 一项都是前两项之和。例如:0, 1, 1, 2, 3, 5, 8, 13……
Copyright © SWFU-CISD, 2012. All rights reserved. 1-12
输出 s 结束 图 4-3 累加若干整数值的框图
计算机编程导论
程序:
#Exp4_1.py print '请输入若干正整数进行求和操作,当输入负数时结束: ' s=0 x = input("请输入一个整数: ") while x >= 0: s=s+x x = input("请输入一个整数: ") print '整数之和=', s

c语言 第四章 选择结构课件

c语言 第四章 选择结构课件

if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
if ~ else 配对原则:缺省{ }时,else 总是和它上面离它最近的未配对的if配对
if(……) if(……) if(……) else…... else…...
else…...
例: if (a==b) if(b==c) printf("a==b==c");
else printf("a!=b");
if(x>y) printf("X>Y\n");
else printf("X<Y\n");
else printf("X==Y\n");
}
运行:Enter integer x,y:12,23 X<Y Enter integer x,y:12,6 X>Y Enter integer x,y:12,12 X==Y
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
main() { int x,y;
printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y)

《Python程序设计基础与应用》习题答案

《Python程序设计基础与应用》习题答案

Python程序设计基础与应用习题答案董付国机械工业出版社目录第1章Python概述 (3)第2章内置对象、运算符、表达式、关键字 (4)第3章Python序列结构 (5)第4章选择结构与循环结构 (6)第5章函数 (9)第6章面向对象程序设计 (11)第7章字符串 (12)第8章正则表达式 (13)第9章文件内容操作 (14)第10章文件与文件夹操作 (16)第11章异常处理结构 (18)第12章tkinter编程案例 (20)第13章网络爬虫入门与应用 (21)第14章Python数据分析与处理 (22)第15章数据可视化 (23)第1章Python概述1.1略1.2略1.3略1.4答:1)使用mport模块名[as别名]这种方式将模块导入以后,使用时需要在对象之前加上模块名作为前缀,必须以“模块名.对象名”的形式进行访问。

如果模块名字很长的话,可以为导入的模块设置一个别名,然后使用“别名.对象名”的方式来使用其中的对象。

2)使用from模块名import对象名[as别名]方式仅导入明确指定的对象,并且可以为导入的对象起一个别名。

这种导入方式可以减少查询次数,提高访问速度,同时也可以减少程序员需要输入的代码量,不需要使用模块名作为前缀。

3)使用from模块名import*方式可以一次导入模块中的所有对象,简单粗暴,写起来也比较省事,可以直接使用模块中的所有对象而不需要再使用模块名作为前缀,但一般并不推荐这样使用。

1.5答:通过Python程序的__name__属性可以识别程序的使用方式,如果作为模块被导入,则其__name__属性的值被自动设置为模块名;如果作为程序直接运行,则其__name__属性值被自动设置为字符串”__main__”。

第2章内置对象、运算符、表达式、关键字2.1//2.2|2.3-2.4&2.5A<B2.61:2:32.7len2.8错2.9错2.10错2.11错2.12不可以,集合中的元素不允许重复,Python不支持集合与整数的乘法运算。

C语言第四章选择结构ppt课件

C语言第四章选择结构ppt课件
/* 定义实型变量 x , y */
/* 求 x 的绝对值并赋给 y */
/* 输入 x 的值 */
/* 输出 x 的绝对值 */
/* 编译预处理:包含头文件 */
二、if ... else 语句
对这一句话“如果x>=0则y=x,如果x<0则y=-x”,可以写出以下语句:
表达式1 ? 表达式2 :表达式3
表达式1为真,结果为表达式2的值 表达式为假,结果为表达式3的结果; 运算符 “ ?:”的优先级只在逗号和赋值运算 符之前;表达式2和表达式3只可能执行一个;这是C语言中的唯一一个三目运算符;条件运算符的结合方向为“自右自左”。
例:已知a=5,b=6,c=7,d=8,n=2 ; 执行以下语句后表达式的值为多少? n的值为多少? (a < b ) ? ( c + d ) : ( + + n )
if ( 表达式1 ) if ( 表达式2 ) 语句1; else 语句2;else if ( 表达式3 ) 语句3; else 语句4;
实现if ~ else 正确配对方法:加{ }
五、条件运算符
能否把两条语句合成一句,更好地体现这种逻辑关系呢?这就是 if ...... else 语句的功能。
简单的if 语句只能表达“如果 ,那么 ”的含义,而if ...... else 语句却能表达“如果 那么 否则 ”的含义。
If ( x>=0) y=x;if (x<0) y=-x;
a>b?a:c>d?c:d
a>b?a:(c>d?c:d)
表达式值为15,n=2
六、 switch 语句
switch 语句是多分支的选择语句又称开关语句。

Visual Basic程序设计实践教程的第4章

Visual Basic程序设计实践教程的第4章

语法形式1: If <条件表达式1> Then <语句块> E1se If <条件表达式21> <语句块> EndIf „ EndIf
Then
语法形式2: If <条件表达式1> Then If <条件表达式21> <语句块> EndIf „ E1se <语句块> EndIf
Then
4.If…Then…ElseIf语句
Do While | Until <条件表达式> <循环体语句> [Exit Do]
Loop
15
(2)直到型循环结构的语法形式为: Do <循环体语句块> [Exit Do] Loop While | Unti1
While...Wend语句是另一种循环控制语句,只要指定 的条件为True,则会重复执行一系列的语句,其语法为: While<条件表达式> <循环体语句块> Wend
29
2.编写如图4.2所示的应用程序,计算应缴纳的个人 所得税额,个人所得税缴纳的起点是3500元,个人应缴纳 的税率如表4.1所示。
30
图4.2 程序运行的参考界面
31
表4.1
个人所得税税率表
32
3.某商场搞促销活动,在购买物品时,按照所标明
的价格用以下数学公式所对应的折扣付款。编写程序,根
据购买价格计算应付金额。应用程序的参考界面如图4.3所 示。
If„Then„ElseIf语句可以用来处理If语句的嵌套情 况,而且这种形式的语句在结构上更紧凑,更易于阅读、 调试和维护。其语法形式如下:
8
If <条件表达式1> Then <语句块1> ElseIf <条件表达式2> Then <语句块2> „ ElseIf <条件表达式n> Then <语句块n> E1se <语句块n+1> EndIf

第4章c语言的三种基本结构

第4章c语言的三种基本结构

程序1: /*exp51.c*/ #include <stdio.h> main ( ) { int x, y;
scanf(“%d", &x); if (x<0)
y= -1; else if (x==0)
y=0; else
y=1; printf ("x=%d, y=%d\n", x, y); }
程序2:将程序1的if语句改为: /*exp52.c*/ #include <stdio.h> main ( ) { int x, y; scanf(“%d", &x); if (x>=0)
1. 顺序结构 先执行A, 再执行B.
A 表示 A B
B
2. 选择结构 存在某条件P, 若P为真,则执行A, 否则执行B。
TP F
A
B
表示为
TP F AB
另一种选择结构––多分支结构.
K
K=K1 K=K2
K=Kn
A1 A2 … Ai … An
3. 循环结构
有两种结构:当型和直到型 (1) 当型结构
例:计算10!并输出结果。
main()
main()
{
{
int i=1, sum=1;
int i=1; long sum=1;
loop: if (i<=10)
loop: if (i<=10)
{
{
sum=sum*i;
sum=sum*i;
i++;
i++;
goto loop;
goto loop;
}
}
printf(“10!=%d\n”,sum); printf(“10!=%ld\n”,sum
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
4.1 条件表达式
>>> if 666: print(9)
9 >>> a = [3, 2, 1] >>> if a:
print(a)
[3, 2, 1]
#使用整数作为条件表达式 #使用列表作为条件表达式
3
4.1 条件表达式
>>> a = [] >>> if a:
print(a) else:
print('empty')
#先把x转换成实数,然后追加到列表numbers尾部 numbers.append(float(x)) except: print('不是合法成绩') #下面的循环用来限制用户只能输入任意大小写的“yes”或者“no” while True: flag = input('继续输入吗?(yes/no)').lower() if flag not in ('yes', 'no'):
while 条件表达式: 循环体
[else: else子句代码块]

for 取值 in 序列或迭代对象: 循环体
[else: else子句代码块]
21
4.3.1 for循环与while循环
• 例4-5 编写程序,输出1~100之间能被7整除但不能同时被5整除的所有整数。
for i in range(1, 101): if i%7==0 and i%5!=0: print(i)
print('鸡:{0},兔:{1}'.format(int(jitu-tu), int(tu))) else:
print('数据不正确,无解')
13
4.2.2 双分支选择结构
• Python还提供了一个三元运算符,并且在三元运算符构成的表达式中还可以 嵌套三元运算符,可以实现与选择结构相似的效果。语法为
break
#使用常量True作为条件表达式 #符合特定条件时使用break语句退出循环
>>> print(s) 55 >>> s = 0 >>> for i in range(0, 11, 1):
s += i
#遍历序列元素
>>> print(s) 55
5
4.1 条件表达式
(1)关系运算符
Python中的关系运算符可以连续使用,这样不仅可以减少代码量,也比较符合 人类的思维方式。
if 表达式: 语句块1
else: 语句块2
条件表达式是否成立?
否 是
语句块2
语句块1
12
4.2.2 双分支选择结构
• 例4-2 求解鸡兔同笼问题。
jitu, tui = map(int, input('请输入鸡兔总数和腿总数:').split()) tu = (tui - jitu*2) / 2 if int(tu) == tu:
value1 if condition else value2
• 当条件表达式condition的值与True等价时,表达式的值为value1,否则表达 式的值为value2。
>>> b = 6 if 5>13 else 9
#赋值运算符优先级非常低
>>> b
9
14
4.2.3 多分支选择结构
if 表达式1: 语句块1
empty >>> i = s = 0 >>> while i <= 10:
s += i i += 1
>>> print(s) 55
#空列表等价于False #使用关系表达式作为条件表达式
4
4.1 条件表达式
>>> i = s = 0 >>> while True:
s += i i += 1 if i > 10:
>>> if a=3: SyntaxError: invalid syntax >>> if (a=3) and (b=4): SyntaxError: invalid syntax
#条件表达式中不允许使用赋值运算符
7
4.1 条件表达式
(2)逻辑运算符
✓ 逻辑运算符and、or、not分别表示逻辑与、逻辑或、逻辑非。对于and而言,必须两侧的表 达式都等价于True,整个表达式才等价于True。
>>> print(1<2<3) True >>> print(1<2>3) False >>> print(1<3>2) True
#等价于1<2 and 2<3
6
4.1 条件表达式
• 在Python语法中,条件表达式中不允许使用赋值运算符“=”,避免了误将 关系运算符“==”写作赋值运算符“=”带来的麻烦。在条件表达式中使用 赋值运算符“=”将抛出异常,提示语法错误。
22
4.3.1 for循环与while循环
• 例4-6 编写程序,打印九九乘法表。
for i in range(1, 10):
for j in range(1, i+1):
print('{0}*{1}={2}'.format(i,j,i*j), end=' ')
print()
#打印空行
23
4.3.2 break与continue语句
>>> 3 and 5 5 >>> 3 or 5 3 >>> 0 and 5 0 >>> 0 or 5 5 >>> not [1, 2, 3] False >>> not {} True
#整个表达式的值是最后一个计算的子表达式的值
#0等价于False
#非空列表等价于True #空字典等价于False
18
4.3 循环结构
• Python主要有for循环和while循环两种形式的循环结构,多个循环可以嵌套 使用,并且还经常和选择结构嵌套使用来实现复杂的业务逻辑。
• while循环一般用于循环次数难以提前确定的情况,当然也可以用于循环次 数确定的情况;
• for循环一般用于循环次数可以提前确定的情况,尤其适用于枚举或遍历序 列或迭代对象中元素的场合。

• 例4-1 编写程序,输入使用空格分隔的两个
整数,然后按升序输出。
x = input('Input two number:') a, b = map(int, x.split()) if a > b:
a, b = b, a #序列解包,交换两个变量的值 print(a, b)
语句块 否
11
4.2.2 双分支选择结构
第4章 选择结构与循环结构
1
4.1 条件表达式
• 绝大部分合法的Python表达式都可以作为条件表达式。 • 在选择和循环结构中,条件表达式的值只要不是False、0(或0.0、0j等)、
空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或 其他空迭代对象,Python解释器均认为与True等价。
19
4.3 循环结构
• 对于带有else子句的循环结构,如果循环因为条件表达式不成立或序列遍历 结束而自然结束时则执行else结构中的语句,如果循环是因为执行了break语 句而导致循环提前结束则不会执行else中的语句。
20
4.3.1 for循环与while循环
• 两种循环结构的完整语法形式分别为:
16
4.2.4 选择结构的嵌套
if 表达式1: 语句块1 if 表达式2: 语句块2 else: 语句块3
else: if 表达式4: 语句块4
注意:缩进必须要正确并且一致。
17
4.2.4 选择结构的嵌套
• 例4-4 使用嵌套选择结构将成绩从百分制变换到等级制。
def func(score): degree = 'DCBAAE' if score > 100 or score < 0: return 'wrong score.must between 0 and 100.' else: index = (score - 60) // 10 if index >= 0: return degree[index] else: return degree[-1]
#获取当前日期时间
year, month, day = date[:3]
day_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if year%400==0 or (year%4==0 and year%100!=0): #判断是否为闰年
print('只能输入yes或no') else:
break if flag=='no':
break #计算平均分 print(sum(numbers)/len(numbers))
27
4.4 综合案例解析
• 例4-9 编写程序,判断今天是今年的第几天。
import time
date = time.localtime()
9
4.2 选择结构
• 常见的选择结构有单分支选择结构、双分支选择结构、多分支选择结构以及 嵌套的分支结构,也可以构造跳转表来实现类似的逻辑。
相关文档
最新文档