第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章 基本流程结构

问题:输入两个整型数据,按照从大到小的顺序输出。 代码: #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语句的用法 • ◇编写简单的综合流程程序
第四章选择和循环

对于无符号数: 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语言程序的基本控制结构

#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

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

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语言 第四章 选择结构课件

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程序设计基础与应用习题答案董付国机械工业出版社目录第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课件

/* 求 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章

语法形式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语言的三种基本结构

程序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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 选择结构
• 常见的选择结构有单分支选择结构、双分支选择结构、多分支选择结构以及 嵌套的分支结构,也可以构造跳转表来实现类似的逻辑。