6 流程控制
6.1 条件判断
6.1.1 条件判断语句(if语句)
- if语句在执⾏时,会先对条件表达式进⾏求值判断,
- 如果为True,则执⾏if后的语句
- 如果为False,则不执⾏
- 语法:if 条件表达式 :
代码块 - 代码块代码块中保存着⼀组代码,同⼀个代码块中的代码,要么都执⾏要么都不执⾏
- 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
- 代码块就是⼀种为代码分组的机制
6.1.2 input() 函数
- 该函数⽤来获取⽤户的输⼊
- input()调⽤后,程序会⽴即暂停,等待⽤户输⼊
- ⽤户输⼊完内容以后,点击回⻋程序才会继续向下执⾏
- ⽤户输⼊完成以后,其所输⼊的的内容会以返回值得形式返回
- input() 函数接受一个标准输入数据,返回为 string 类型。
input("请输入:")
请输入是提示信息
6.1.3 if-else语句
- 语法:
if 条件表达式 :
代码块
else :
代码块
- 执⾏流程
- if-else语句在执⾏时,先对if后的条件表达式进⾏求值判断
- 如果为True,则执⾏if后的代码块
- 如果为False,则执⾏else后的代码块
# 1. 定义布尔型变量 `has_ticket` 表示是否有车票
has_ticket = True
# 2. 定义整型变量 `knife_length` 表示刀的长度,单位:厘米
knife_length=int(input("请输入刀的长度:"))
# 3. 首先检查是否有车票,如果有,才允许进行 **安检**
if has_ticket:
print("有车票,可以开始安检..")
# 4. 安检时,需要检查刀的长度,判断是否超过 20 厘米
if knife_length>=20:
print("不允许携带 %d 厘米长的刀上车" % knife_length)
print("不允许上车")
else:
print("请上车")
#* 如果超过 20 厘米,提示刀的长度,不允许上车
#* 如果不超过 20 厘米,安检通过
# 5. 如果没有车票,不允许进门
else:
print("您要先买票啊")
6.1.4 if-elif-else 语句
- 语法结构
if 条件表达式1 :
代码块
elif 条件表达式2 :
代码块
elif 条件表达式3 :
代码块
........
else :
代码块
- 执⾏流程
- if-elif-else语句在执⾏时,会⾃上向下依次对条件表达式进⾏求值判断,
- 如果表达式的结果为True,则执⾏当前代码块,然后语句结束
- 如果表达式的结果为False,则继续向下判断,直到找到True为⽌
- 如果所有的表达式都是False,则执⾏else后的代码块
elif
和else
都必须和if
联合使用,而不能单独使用- 可以将
if
、elif
和else
以及各自缩进的代码,看成一个 完整的代码块
- if语句的关键字为:if – elif – else
- 总结: if-elif-else中只会有⼀个代码块会执⾏
- 由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
# if-elif-else语句一定会有且只有一个条件执行
value = 20000 # ?
if value >= 30000:
print('有钱任性')
elif value >= 20000:
print('有钱真好)
elif value >= 10000:
print(''哥也月薪上万了')
elif value >= 5000:
print('工资还说的过去')
elif value >= 2000:
print('能养活自己了')
else:
print('吃土我开心')
6.1.5 while 语句循环控制
- 循环语句可以使指定的代码块重复指定的次数.循环语句分成两种,while循环和 for循环
- 语法:
while 条件表达式 :
代码块
else:
代码块
案例:
a = input("请输入字符串:")
print(a)
while len(a) <= 5:
print("字符串长度是{}".format(len(a)), a)
a = input("输入错误,请输入字符串:")
else:
print("恭喜你输入正确", "字符串长度是{}".format(len(a)), a)
print("逆序", a[::-1])
- 循环嵌套
- 你可以在循环体内嵌入其他的循环体,如在while循环中可以嵌入for循环, 反之,你可以在for循环中嵌入while循环。
i = 0
while i < 5:
j = 0
while j < 5:
print('*', end='')
j += 1
print()
i += 1
break和continue
-
break 可以⽤来⽴即退出循环语句,包括else语句
- break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
- break语句用在while和for循环中。
- 如果使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。
-
continue ⽤来跳过当次循环
- Python continue 语句跳出本次循环,而break跳出整个循环。
- continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
i = 0
while i < 5:
i += 1
if i == 2:
break
# continue
print(i)
# print(b)
else: # while循环的后继语句会在while循环正常执行完毕之后继续执行
print('循环正常执行完毕')
- 延伸
- 打印99乘法表
# 99乘法表
#代码一
row = 0
while row < 9:
row += 1
col = 0
while col < row:
col += 1
print("{}*{}={}".format(col, row, col * row), end="\t")
print()
#代码二
row = 1
while row <= 9:
col = 1
while col <= row:
print("{}*{}={}".format(col, row, col * row), end="\t")
col += 1
print()
row += 1
第五讲作业
1.求1000以内所有的⽔仙花数
2.获取⽤户输⼊的任意数,判断其是否是质数?
3.猜拳游戏:
出拳 玩家:⼿动输⼊ 电脑:随机输⼊
判断输赢: 玩家获胜 电脑获胜 平局
- 作业1:
#方法一
for a in range(0, 9):
for b in range(0, 9):
for c in range(0, 9):
i = a * 100 + b * 10 + c
if a ** 3 + b ** 3 + c ** 3 == i and i > 100:
print(i, "是水仙花数")
#方法二
for i in range(100, 1000):
a = str(i)
b = int(a[0])
c = int(a[1])
d = int(a[2])
if i == b ** 3 + c ** 3 + d ** 3:
print(i, "是水仙花数")
# 方法三:使用while
i = 100
while i <= 1000:
a = str(i)
b = int(a[0])
c = int(a[1])
d = int(a[2])
if i == b ** 3 + c ** 3 + d ** 3:
print(i)
i += 1
# 方法四:
i = 100
while i < 1000:
j = str(i)
if int(j[0]) ** 3 + int(j[1]) ** 3 + int(j[2]) ** 3 == int(j):
print(j)
i += 1
- 作业2
a = int(input("请输入任意一个数字:"))
if a > 1:
for b in range(2, a):
if a % b == 0:
print("%s是合数" % a)
break
else:
print("%s是质数" % a)
else:
print("输入错误")
- 作业3
import random
# | 1 | 石头
# | 2 | 剪刀
# | 3 | 布
# 1、石头1 胜 剪刀2
# 2、剪刀2 胜 布3
# 3、布3 胜 石头1
# 4、玩家=电脑 平局
while True:
player = int(input("请输入1,2,3三个数中一个数:"))
computer = random.randint(1, 3)
if (player == 1 and computer == 2) or \
(player == 2 and computer == 3) or \
(player == 3 and computer == 1):
print("玩家获胜")
elif (player == 2 and computer == 1) or \
(player == 3 and computer == 2) or \
(player == 1 and computer == 3):
print("电脑获胜")
elif player == computer:
print("咱心有灵犀,平局啦!")
if player == 0:
print("游戏停止")
break
print("玩家选择的拳头是%s -电脑出的拳是%s" % (player, computer))
print("输入0游戏停止")
方法二:
while True:
import random
player = int(input('请输入1,2,3:'))
computer = random.randint(1, 3)
# list1 = [(1, 3), (2, 1), (3, 2)]
if (player == 1 and computer == 3) or (player == 2 and computer == 1) or (player == 3 and computer == 2):
print('玩家获胜')
elif player == computer:
print('平局')
else:
print('电脑获胜')