条件与循环语句
条件与循环语句的表达式
在选择结构和循环结构中,都要根据条件表达式的值来确定下一步的执行流程,条件表达式的值只要不是False、0、0.0、0j、None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器都认为其与True等价,从这个意义上来讲,所有Python合法表达式都可以作为条件表达式,包括含有函数调用的表达式。
if语句
if条件语句的格式
|
|
参数解释:
- 如果 “condition_1” 为 True 将执行 “statement_block_1” 块语句
- 如果 “condition_1” 为False,将判断 “condition_2”
- 如果”condition_2” 为 True 将执行 “statement_block_2” 块语句
- 如果 “condition_2” 为False,将执行”statement_block_3”块语句
- 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
- 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
if案例
简单的if语句案例:
|
|
使用整数作为if条件表达式
如下所示:
|
|
if语句中判断相等是用“==”
如下所示:
|
|
代码解释:if a == 8表示:如果条件a==8返回的值是True,就执行下面的语句,此语句后面的冒号是必需的,下面一行语句print(a)前面要有4个空格的缩进。 如果if后面不放语句时,比如空出来用于后续补充,可以用pass语句,就是什么也不做,如下所示:
pass语句
|
|
如果误用了等号作为判断条件,那么就会出错,如下所示:
|
|
列表作为if条件表达式:
|
|
三元运算符
语法为value1 if condition else value2
,当条件表达式condition的值与True等价时,表达式的值为value1,否则表达式的值为value2。value1和value2本身可以是复杂的表达式,也可以包括函数调用,如下所示:
|
|
三元运算符案例第二:
|
|
这种操作的公式为: A = Y if X else Z 这表示为: 如果X为真,那么就执行Y。 如果X为假,那么就执行Z。 如下面的案例:
|
|
代码解释:在第一步中,因为x>y是假,因此执行Z,即qiwsir,在第二步中,因为x <y 是真,执行Y,即python。其实可以这么理解,这一段代码是从左向右执行的,如果中间的判别式是对的,则就此执行结束,如果中间的判别式是错的,继续向右执行。
多分枝条件语句
|
|
运行结果如下所示:
|
|
代码解释:如果输入的是10,则输出You are smart,如果大于10,则执行下一条语句,如果小于10,执行第三条语句,这第一条到第三条一共有3种选择,称为分支。其中elif是else if的缩写。
if语句的嵌套
|
|
上述语句可以改写为嵌套语句,如下所示:
外部的条件判断包含两个分支。第一个分支只有一个简单的语句。第二个分支包含了另外一重条件判断,这个内部条件判断有两个分支。这两个分支都是简单的语句,他们的位置也可以继续放条件判断语句的。 逻辑运算符有时候对简化嵌套条件判断很有用。比如下面这个代码就能改写成更简单的版本:
|
|
上面的例子中,只有两个条件都满足了才会运行print语句,所以就用逻辑运算符来实现同样的效果即可:
|
|
还可以更加简单:
案例:if…else:面试资格确认
|
|
案例if:判断今天是今年的第几天。
|
|
while语句
while语句的格式如下所示:
|
|
while语句案例
简单案例
以下实例使用了 while 来计算 1 到 100 的总和:
|
|
常量作为while的条件表达式
|
|
break语句
在while循环语句,满足一定条件时,用break跳出循环:
|
|
while案例
用户输入若干个成绩,求所有成绩的平均分。每输入一个成绩后询问是否继续输入下一个成绩,回答yes就继续输入下一个成绩,回答no就停止输入成绩。
for语句
Python中主要有两种形式的循环结构,for循环和while循环。while循环一般用于循环次数难以提前确定的情况;而for循环一般用于循环次数可以提前确定的情况,尤其适用于枚举或遍历序列或迭代对象中元素的场合。当循环带有else子句时,如果循环因子条件因为条件青工达不成立或序列遍历结束而自然结束时则执行else结构中的语句,如果循环是因为执行了break语句而导致循环提前结束则不执行else中的语句,其完整语法形式为:
|
|
或者是:
|
|
for循环中常用的操作符
操作符 | 描述 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于,比较对象是否相等 |
!= | 不等于 |
for循环案例
简单案例
使用for循环遍历:
|
|
带有else子句的循环结构
|
|
带有while的循环结构
|
|
显示元组中的每个元素
|
|
打印字符串中的每个元素
|
|
根据索引显示每个字符
|
|
range()函数的用法
range()函数经常与for循环配合使用,它的用法是range(a,b,c)
,其中c为步长,a与b是范围,先看一个简单的案例:
|
|
如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,例如:
|
|
或者指定区间,如下所示:
|
|
range()函数控制循环次数。
|
|
案例:找出100以内能被3整除的正整数
|
|
for循环遍历序列类型对象
|
|
遍历字典元素
|
|
案例:计算两个列表中对应元素的和
两个列表分别为:a = [1,2,3,4,5]和b = [9,8,7,6,5],如下所示:
案例:将值与键进行转换
|
|
案例:字符的切片及循环
|
|
for…else:求1到99中的整数根
|
|
案例(for…break):求200以内能被17整除的最大正整数
|
|
案例:鸡兔同笼的问题
假设共有鸡、兔30只,脚90只,求鸡、兔各有多少只?
|
|
案例4:求1~100之间能被7整除,但不能同时被5整除的所有整数。
|
|
案例:输出水仙花数
所谓水仙花数,是指一个3位的十进制数,其余各位数字的立方和恰好等于该数本身。例如,153是水仙花数,因为153=1^3+5^3+3^3
。
|
|
案例:求200以内能被17整除的最大正整数。
|
|
案例9:while…break判断一个数字的奇偶数
|
|
当a=8的时候,执行循环体中的break跳出循环,执行最后的打印语句,得到结果8 is even number,如果a=9,如下所示:
|
|
此时会跳过break,进入else下面的语句。
enumerate函数
enumerate()是python的内置函数。
enumerate在字典上是枚举、列举的意思,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。enumerate多用于在for循环中得到计数。
同时得到一个元素的索引和内容
|
|
使用案例
|
|
列表元素的提取
|
|
break语句
break语句和continue语句在while循环及for循环中都可以使用,并且一般常与选择结构结合使用。break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行,如下所示:
简单break案例
|
|
或者指定区间,如下所示:
range()函数控制循环次数。
|
|
continue语句
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环,如下所示:
continue案例1:
|
|
continue案例2:
|
|
pass语句
Python pass是空语句,是为了保持程序结构的完整性。pass不做任何事情,一般用做占位语句,如下所示:
|
|
pass语句案例1
在面向对象的程序设计中,pass语句经常这么使用,如下所示:
|
|
此时定义了一个类,只是现在没有具体想好怎么写它,先占一个空位。
pass语句案例2
以下代码在字母为o
时执行pass语句:
|
|