条件语句和while循环
一. if语句
Python 编程中 if 语句用于控制程序的执行,可以通过下图来简单了解条件语句的执行过程:

基本形式为:
if 判断条件:
执行语句
else:
执行语句
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。
Python关系运算符
| 运算符 | 描述 |
|---|---|
| == | 等于 - 比较对象是否相等 |
| != | 不等于 - 比较两个对象是否不相等 |
| > | 大于 - 返回x是否大于y |
| < | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价 |
| >= | 大于等于 - 返回x是否大于等于y |
| <= | 小于等于 - 返回x是否小于等于y |
Python中使用缩进代替c语言中的大括号,来告诉程序所执行的内容。
缩进——推荐四个空格 (使用2个、3个空格或者tab都是可以得)
下面举个例子来测试一下:
如果周末不下雨,就去逛街,否则就在家学习
tianqi = 'xiayu'
if tianqi != 'xiayu':
print('逛街')
else:
print('在家学习')
运行结果为:
在家学习
下面我们可以对上面的代码进行一些小优化:
原则:
1、逻辑更加简单,比如少用否定,多用肯定;
2、用英文代替拼音,减少歧义
weather = 'overcast' # 阴天
if weather == 'rain':
print('在家学习')
if weather == 'overcast':
print('去钓鱼')
if weather == 'sunny':
print('逛街')
运行结果为:
去钓鱼
但是当多个if叠在一起时又会出现很多歧义,因为前面的if判断完之后,依旧会往下运行,从而导致代码运行效率很低,这里,我们就引入了elif来优化代码:
下面我们来比较一下if与elif的区别:
a = 5
if a < 6: #条件1
print(1)
if a < 7: #条件2
print(2)
else:
print(3)
运行结果:
1
2
不难看出,在判断完条件一之后,代码依旧会往下运行至条件二继续判断,
而用elif语句是这样的:
a = 5
if a < 6: #条件1
print(1)
elif a < 7: #条件2
print(2)
else:
print(3)
运行结果:
1
很明显,引入elif之后,在判断完第一个if之后,直接结束本次判断流程,不会往下继续判断。
小结:
1、if使用:if后面跟上判断表达式,注意加上某号和缩进
2、else使用:else不能单独使用,后面直接跟上某号,没有判断式
3、elif使用:elif只能跟在if后面,不能单独出现
4、判断使用:判断语句是基本的语句,是必须要掌握的内容
if结构与elif结构应用场景:
1.如果你只想执行一个代码块,那么用if-elif-else结构吧;
2.如果你要运行多个代码块,那么就用多个if吧。(多条件同时满足)
二.三目运算
python中没有其他语言中的三元表达式,不过有类似的实现方法
我们从一个具体的例子切入。假设现在有两个数字,我们希望获得其中较大的一个,那么可以使用 if else 语句,例如:
a = 1
b = 2
if a>b:
max = a;
else:
max = b;
print(max)
运行结果:
2
但是 Python 提供了一种更加简洁的写法,如下所示:
a = 1
b = 2
max = a if a>b else b
print(max)
运行结果:
2
使用 if else 实现三目运算符(条件运算符)的格式如下:
exp1 if contion else exp2
condition 是判断条件,exp1 和 exp2 是两个表达式。如果 condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果。
前面的语句max = a if a>b else b的含义是:
如果 a>b 成立,就把 a 作为整个表达式的值,并赋给变量 max;
如果 a> b 不成立,就把 b 作为整个表达式的值,并赋给变量 max。
下面在看一个例子:
weather = "rain"
print("在家学习") if weather == "rain" else print("出去玩")
print("在家学习" if weather == "rain" else "出去玩")
运行结果为:
在家学习
在家学习
三. 逻辑运算
逻辑运算符
| 运算符 | 逻辑表达式 | 描述 |
|---|---|---|
| and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 |
| or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 |
| not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 |
1. 与逻辑 and
and:表示”并且“或者”和“的意思,只有当and两边都是为真的时候,才会返回真,其他语言中常用**&来表示and**
| 左边 | 右边 | 结果 |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
举例:
num = 18
if num > 10 and num < 20:
print("真年轻")
else:
print("瞎说")
运行结果:
真年轻
2. 或逻辑 or
or:表示”或者“的意思,只有两边存在真,就会返回真,都会假才会返回假,在其他语言中常用 | 来表示or
| 左边 | 右边 | 结果 |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
举例:
num = 5
if num > 8 or num < 2:
print("ok")
else:
print("no")
运行结果为:
no
3. 逻辑非 not
not:表示”取反“的意思,也就是真的会变成假的,假的会变成真的,在其他语言中常用!来表示not
| 左边 | 结果 |
|---|---|
| 1 | 0 |
| 0 | 1 |
举例:
a = False
if not a:
print('ok')
else:
print('no')
运行结果:
ok
4.逻辑运算优先级
not > and > or
举例:
print(1==2 or 2==3 or 3==3 and 1==1 and not 2==1)
运行结果:
True
5. 逻辑短路
下面我们来看下面的的代码:
print(b == 1)
运行结果为:
Traceback (most recent call last):
File "C:\Users\admin\Desktop\new.py", line 1, in <module>
print(b == 1)
NameError: name 'b' is not defined
由于b未定义,所以b == 1是不成立的,直接报错
但是看下面的代码:
print(1 == 2 and b == 1)
运行结果为:
False
为什么第二次b一样为定义,却可以正常运行呢?这就涉及到了python的逻辑短路
由于与运算and的运算规则为一假则假,所以and前面1 == 2已经为假,后面的无论真假结果都为假,所以造成了and后面代码被短路,直接忽略跳过,有利于提高代码运行效率。
逻辑短路·规则如下
- 表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。若 or 的左侧逻辑值为 False ,则输出or右侧的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果
- 表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。若 and 的左侧逻辑值为 True,则输出其后的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果
- 若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。
总结:
1、and是并且的意思,也就是说左右两边需要同时满足
2、or是或者的意思,左右两边只要满足一个即可
3、逻辑短路,理解逻辑短路的原理
4、not是取反的意思,也就是真的会变成假,假的会变成真
四. while循环
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 判断条件(condition):
执行语句(statements)……
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假 false 时,循环结束。
执行流程图如下:

举例:
i = 1 #循环初始值
while i < 10: #循环终止条件
print(f'我在跑步,当前是第{i}圈') #代码块
i += 1 #等同于 i = i + 1
运行结果:
我在跑步,当前是第1圈
我在跑步,当前是第2圈
我在跑步,当前是第3圈
我在跑步,当前是第4圈
我在跑步,当前是第5圈
我在跑步,当前是第6圈
我在跑步,当前是第7圈
我在跑步,当前是第8圈
我在跑步,当前是第9圈 #当i=10时,不满足i<10,所以结束循环
无限循环:也叫死循环,代码会无限循环执行下去
例如:
i = 1
while (i > 0): #这里每次循环i均大于0,因此构成死循环
print(f"这是第{i}次循环")
i += 1
运行结果:
这是第1次循环
这是第2次循环
这是第3次循环
这是第4次循环
这是第5次循环
这是第6次循环
这是第7次循环
这是第8次循环
这是第9次循环
这是第10次循环
这是第11次循环
这是第12次循环
这是第13次循环
这是第14次循环
这是第15次循环
......
break语句
如果想提前终止代码该怎么办呢?
Python break语句,就像在C语言中,打破了最小封闭for或while循环。
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
break语句用在while和for循环中。
如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。
例如:
i = 1
while i < 10:
if i == 5:
break #提前退出循环,无视后面代码
print(f'我在跑步,当前是第{i}圈')
i += 1
运行结果:
我在跑步,当前是第1圈
我在跑步,当前是第2圈
我在跑步,当前是第3圈
我在跑步,当前是第4圈
continue语句
如果想忽略中间某一次循环该怎么办呢?
Python continue 语句跳出本次循环,而break跳出整个循环。
continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
continue语句用在while和for循环中。
i = 1
while i < 10:
if i == 5:
continue #跳过本次循环,直接回到循环条件进行下一次
print(f'我在跑步,当前是第{i}圈')
i += 1
运行结果:
我在跑步,当前是第1圈
我在跑步,当前是第2圈
我在跑步,当前是第3圈
我在跑步,当前是第4圈
但是为什么第五次和之后的都不显示了呢,是因为在continue跳出本次之后,i依然为5,继续判断,依然回到continue,如此往复,后面的就都没有了,因此我们做如下改进:
i = 0
while i < 10:
i += 1
if i == 5:
continue
print(f'我在跑步,当前是第{i}圈')
运行结果:
我在跑步,当前是第1圈
我在跑步,当前是第2圈
我在跑步,当前是第3圈
我在跑步,当前是第4圈
我在跑步,当前是第6圈
我在跑步,当前是第7圈
我在跑步,当前是第8圈
我在跑步,当前是第9圈
我在跑步,当前是第10圈
此时,i = i + 1这条语句放在了if前面,当i = 5跳出本次循环到下一次循环后,i加一之后变成了6继续可以执行,不过这样,初始值i 需要改成0以保证不出现0圈
本节课总结
一、if判断
掌握:if判断的使用
掌握:多个条件下的选择判断
二、三目运算
掌握:三目运算的基本使用
三、逻辑判断
掌握:and、or和not三种逻辑运算符
四、while
掌握:while的循环使用方法
掌握:break和continue的使用方法
上次作业:
参考代码如下
1、一个时间格式的整数:20201012,利用计算取出它的年月日
a = 20201209
year = a // 10000
moth = a // 100 % 100
day = a % 100
print('{}年{}月{}日'.format(year,moth,day))
运行结果:
2020年12月9日
2、将多个单词利用字符串拼接,输出成一句话 ‘hello world’‘ my name is ’‘xxx’ 3种
a = 'hello world'
b = 'my name is'
c = 'luokk'
print(a + ' ' + b + ' '+ c)
print(f'{a} {b} {c}')
print('%s %s %s' % (a,b,c))
print('{} {} {}'.format(a,b,c))
运行结果:
hello world my name is luokk
hello world my name is luokk
hello world my name is luokk
hello world my name is luokk
3、计算出一个圆的周长,面积,让用户输入半径
import math
r = float(input('请输入圆的半径:'))
area = math.pi * r ** 2
girth = 2 * math.pi * r
print('圆的面积为:{:.2f}'.format(area))
print('圆的周长为:{:.2f}'.format(girth))
运行结果:
请输入圆的半径:5
圆的面积为:78.54
圆的周长为:31.42
本节作业:
1、利用while写出九九乘法表
2、利用random的randint方法写一个猜数字的小游戏
答案下一个博客公布
本文详细介绍了Python中的条件语句if及循环语句while的使用方法,包括基本语法、逻辑运算符、三目运算符等内容,并通过实例讲解了break和continue的作用。

3747

被折叠的 条评论
为什么被折叠?



