判断
1. if 语句
if 语句语法:
if 判断的条件:
条件成立时, 执行的代码
flag = False
if flag == True:print("hhh")age = 19
if age > 18:print("可以上网了! ")
2. if-else 语句
定义一个整数, 记录年龄 判断是否满18 如果满18, 允许进网吧
age = int(input("请输入年龄: "))
if age >= 18:print("允许进网吧")
else:print("未成年")
3. if - elif - else 语句
需求: 1. 定义 holiday_name 字符串变量记录节日名称 2. 如果是 情人节,应该 买玫瑰/看电影 3. 如果是 平安夜,应该 买苹果/吃大餐 4. 如果是 生日,应该 买蛋糕 5. 其他的日子,每天都是节日……
holiday_name = input("请输入节日: ")
if holiday_name == "情人节":print("买玫瑰/看电影")
elif holiday_name == "平安夜":print("买苹果/吃大餐")
elif holiday_name == "生日":print("买蛋糕")
else:print("每天都是节日")
4. if 嵌套
需求: 1. 定义布尔型变量 has_ticket 表示是否有车票 2. 定义整型变量 knife_length 表示刀的长度,单位:厘米 3. 首先检查是否有车票,如果有,才允许进行 安检 4. 安检时,需要检查刀的长度, 5. 判断是否超过 20 厘米a. 如果超过 20 厘米,提示刀的长度,不允许上车b. 如果不超过 20 厘米,安检通过 6. 如果没有车票,不允许进门
has_ticket = eval(input("请输入是否有车票: "))
knife_length = int(input("请输入刀的长度: "))if has_ticket:if knife_length <= 20:print("安检通过")print("刀的长度:{}".format(knife_length))else:print("不允许上车")print(f"刀的长度是:{knife_length}")else:print("不允许进入")
5. 判断案例: 猜拳游戏
需求: 1. 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3) 2. 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能 3. 比较胜负并输出结果player == 1 and computer == 2 player == 2 and computer == 3 player == 3 and computer == 1
import randomplayer = int(input("请玩家输入石头(1)剪刀(2)布(3): "))
computer = random.randint(1, 3)
print("computer: {}".format(computer))
if player == computer:print("平局")
elif (player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1):print("player win")
else:print("computer win")
循环
循环的作用是让指定的代码重复的执行
1. while 循环
1.1 while 循环语法
while
循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行
# 1.定义循环变量
i = 1
# 2.使用while判断条件
while i <= 10000:# 要重复执行的代码print('吃饭啦')# 3.修改循环变量i += 1
1.2 死循环
死循环指的是程序持续执行,无法终止。原因通常是忘记在循环内部修改循环变量的值
比如:
# 1.定义循环变量
i = 0
# 2.使用while判断条件
while i < 10000:# 要重复执行的代码print('吃饭啦')
和正常代码相比,在循环内部忘记修改循环变量,循环条件一直满足,循环就会一直执行。死循环在程序中也有一定的使用场景,可以保证程序不会停止。
比如:QQ的服务器要保证能一直接收到消息,通常内部会有死循环支持。再比如,做界面开发时,为了保证界面能一直显示,内部也通常会维护一个死循环
死循环最简单的写法如下:
while True:pass
1.3 while 循环嵌套
打印直角三角形
根据用户输入的数值n
,打印n
行三角形
*
**
***
****
*****
i = 1
while i <= 5:j = 1while j <= i:print("*",end = '\t')j += 1print()i+=1
打印倒直角三角形
*****
****
***
**
*
i = 5
while i >= 1:j = 1while j <= i:print("*", end='\t')j += 1print()i -= 1
1.3 循环嵌套
while 嵌套就是:while 里面还有 while
while循环嵌套的格式如下:
1.4 while 循环案例
九九乘法表
思路分析:
- 打印星星
- 使用嵌套循环打印阶梯星星
- 将星星替换成乘法口诀公式
i = 1
while i <= 9:j = 1while j <= i:print("%d * %d = %d" % (j, i, j*i),end='\t')j += 1print()i += 1
倒九九乘法表
i = 9
while i >= 1:j = 1while j <= i:print("%d * %d = %d" % (j, i, j * i), end='\t')j += 1print()i -= 1
2. for 循环
2.1 for 循环语法
for
循环的主要作用是遍历数据(容器))中的元素。字符串、列表等高级数据类型都属于容器,都可以通过for
循环遍历
for
循环的语法格式如下:
for 临时变量 in 列表或字符串等可迭代对象:执行的代码
使用for
循环遍历字符串中的所有字符
需求:
打印字符串'hello world'中每一个字符
str = 'hello world'
# ele普通变量 接收容器中的元素
for s in str:print(s)
2.2 in和not in
in
操作符用于判断元素是否存在于容器中,如果在容器中,返回 True
,否则返回 False
in
操作符用于判断元素是否存在于容器中,如果在容器中,返回 True
,否则返回 False
str = 'hello'
result = 'h' in str
print(result)
result = 'e' not in str
print(result)
结果
True
False
2.3 for 循环控制循环次数 range
range()
可创建一个整数列表。range()
相当于数学中的左闭右开区间(包含左,不包含右)
我们先看看数学中的区间:
全开全闭区间
- 开区间:
(1,10)
不包含1和10 - 闭区间:
[1,10]
包含1和10
半开半闭区间
- 左开右闭区间:
(1,10]
包含10不包含1 - 左闭右开区间:
[1,10)
包含1不包含10
range的定义
# 定义0到10的区间(包含0,不包含10)
arr = range(0, 10)
如果区间从0开始可以省略0
# 定义0到10的区间(包含0,不包含10)
arr = range(10)
倒序的区间定义
# 定义从10到1的区间,参数分别代表 start开始, stop结束, step步长
arr = range(10, 0, -1)
区间可以通过for进行遍历
"""
range 包含左边,不包含右边
如果从0开始,则不可以省略0
"""
arr = range(0, 5)
for i in arr:print(i) # 0 1 2 3 4
print("--------------------------")arr2 = range(6)
for i in arr2:print(i) # 0 1 2 3 4 5
print("--------------------------")
"""
倒序 10-1的区间, 参数分别代表: 开始,结束,step(步长)
step:步长,表示间隔的数量"""
arr3 = range(10, 0, -1)
#
# for i in arr3:
# print(i)
2.3 for 循环案例: 水仙花数
打印出所有"水仙花数",所谓"水仙花数"是指一个三位数[100, 1000),其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
# num = 153
# bai = int(num / 100)
# print(int(bai))
# shi = int(num / 10 - int(bai) * 10)
# print(int(shi))
# ge = int(num - (int(bai) * 100) - (int(shi) * 10))
# print(int(ge))
# print(bai*bai*bai + shi*shi*shi + ge*ge*ge)# num = range(100, 1000)
# for i in num:
# bai = int(i / 100)
# shi = int(i / 10 - int(bai) * 10)
# ge = int(i - (int(bai) * 100) - (int(shi) * 10))
# if i == bai*bai*bai + shi*shi*shi + ge*ge*ge:
# print(i)"""
1. 遍历所有的三位数
2. 求 百位 十位个位 立方和
3. 判断并打印
"""
for ele in range(100, 1000):# 百位hun = ele // 100# 十位ten = ele // 10 % 10# 个位single = ele % 10# 判断立方和# 立方 pow(hun, 3) 或者 hun ** 3if (hun ** 3 + ten ** 3 + single ** 3) == ele:print(ele)for i in range(100, 1000):bai = i // 100shi = i // 10 % 10ge = i % 10if i == pow(bai, 3) + pow(shi, 3) + pow(ge, 3):print(i)
3. 循环的跳转
break
和continue
是专门在循环中使用的关键字
- break:某一条件满足时,不再执行循环体中后续代码,并退出循环
- continue:某一条件满足时,不再执行本次循环体中后续代码,但进入下一次循环判断
3.1 break
for i in range(5):if i == 3:breakprint(i)
结果:
0
1
2
3.2 continue
for i in range(5):if i == 3:continueprint(i)
结果:
0
1
2
4
4. 循环中的else
循环也可以像if
语句一样结合else
。
else
中的语句会在循环正常执行完(即没有通过 break
或其他异常情况中断循环)的情况下执行,while
循环也是如此
格式:
for 变量 in 容器:
循环体代码
else:
没有通过break退出循环, 循环结束后, 会执行的代码
for else,会执行else中的代码
str = 'hello world'for ele in str:print(ele)else:print('执行了else语句')
for else中执行了continue,会执行else中的代码
for ele in str:if ele == 'l':continueprint(ele)else:print('执行了else语句')
for else中执行了break,else语句不会执行
for ele in str:if ele == 'l':breakprint(ele)else:print('else语句不会执行')
5. 循环案例: 密码合法判断
需求
判断登录密码hhew2383dW_fkf&E@^
是否合法。
- 密码必须是数字、字母(大小写都可以)、和下划线,否则不合法
- 如果密码合法,就输出
"密码合法"
分析
- 定义容器,保存所有的数字 字母 _
- for循环遍历密码中每一个元素
- 判断每一个元素是否合法
- 如果不合法,执行break
password = 'hhew2383dW_fkfE'
# 2.定义容器:保存所有的数字 字母 _
container = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'for ele in password:# 判断每一个元素是否合法# 每一个元素 是否在容器中if ele not in container:print("密码不合法, 不可包含%s" % ele)break
else:# 密码合法就不会执行了print("密码合法")