if、while、for
学习目标
- 掌握if分支判断语法的定义和使用
- 完成if分支判断练习
- 掌握while循环语法的定义和使用
- 完成while循环练习
- 掌握for循环语法的定义和使用
- 完成for循环练习
1. 基本if语句
"""
if 条件表达式: # 条件表达式需返回布尔值,或者能转成布尔值的任意数据
代码块 # 如果条件满足,则执行代码块
"""
name = input("请输入姓名:")
if len(name) == 3:
print("姓名有3个字!")
2. 基本if语句省略写法
"""
if 条件表达式: 一句执行语句 # 当执行语句只有一行,可以和判断条件写在同一行
"""
name = input("请输入姓名:")
if len(name) == 3: print("姓名有3个字!")
3. if...else...语法
"""
if 条件表达式:
满足条件执行的代码块
else:
不满足条件时执行的代码块
"""
name = input("请输入姓名:")
if len(name) == 3:
print("姓名有3个字!")
else:
print("姓名不是3个字!")
4. if...elif...else...语法
"""
if 条件表达式1: # 如果‘条件表达式1’成立,则执行语句块1;如果不成立,则去判断下一个elif的条件
执行语句块1
elif 条件表达式2:
执行语句块2
elif 条件表达式3:
执行语句块3
else: # 如果全部条件都不成立,则执行else
执行语句块4
"""
num = int(input("输入语文成绩:"))
if 100 >= num >= 90:
print("成绩优秀")
elif 90 > num >= 80:
print("成绩中等")
elif 80 > num >= 60:
print("成绩及格")
elif 60 > num >= 0:
print("成绩不及格")
else:
print("输入有误!")
5. if嵌套
"""
if 条件表达式1:
执行语句块1
elif 条件表达式2:
执行语句块2
elif 条件表达式3:
if 条件表达式A:
执行语句块A
elif 条件表达式B:
执行语句块B
else:
其他语句块
"""
n = input("请输入学科(1.语文 2.数学 3.英语):")
if n == "1":
s = input("请输入语文成绩:")
if s.isdigit(): # 判断输入的成绩是否为纯数字
print("语文成绩录入正确!")
else:
print("语文成绩录入失败!")
elif n == "2":
s = input("请输入数学成绩:")
elif n == "3":
s = input("请输入英语成绩:")
else:
print("输入学科有误!")
if练习:用已学的知识点完成练习:用户输入一个数,判断是否为整数。
只需考虑以下情况:
- 88
- -88
- 8-8
- 88-
- 8-8-
- 8.8
- -8.8
- abc
- -
参考代码1:
num_1 = input("请输入一个数:")
if num_1[0] == "-": # 满足条件,说明第一个符号是负号
if num_1[1:].isdigit(): # 从下标1开始往后,是否为纯数字
print("是整数")
else:
print("不是整数!")
elif num_1[0] != "-": # 第一个字符不是负号
if num_1.isdigit():
print("是整数")
else:
print("不是整数")
else:
print("不是整数!")
参考代码2:
num_str = input('请输入一个整数:')
if num_str.isdigit() or (num_str[0] == '-' and num_str[1:].isdigit()):
num = int(num_str)
print('%d 是一个整数。' % num)
else:
print('输入的不是整数。')
6. 基本while循环语法
"""
while 条件表达式: # 满足条件表达式,则运行“执行语句”,当执行语句完成后,会再一次循环判断条件
执行语句
"""
i = 1
while i <= 5: # i的值在1~5之间时,可以进入循环;大于5之后,不满足条件,则不进入循环
print("当前数字是", i)
i += 1 # 每次循环,i均会自身+1
7. 死循环
"""
死循环:
while True: # 当判断条件的结果,永远都是”真“,会进入死循环
循环语句体
"""
i = 1
while i <= 5:
print("当前数字", i)
while True:
print("aaa")
8. while...else...语法
"""
while 条件表达式: # 条件表达式成立,执行循环体
循环体
else: # 条件表达式不成立,退出循环,执行else;若条件表达式从未成立,也会执行一次else
其他语句块
"""
i = 1
while i <= 5: # i的值在1~5之间时,可以进入循环;大于5之后,不满足条件,则不进入循环
print("当前数字是", i)
i += 1
else:
print("退出循环时的数字是", i)
9. while的continue关键词
"""
语法3
while 条件表达式:
语句块1
continue # 遇到continue,会立即掐断当前这一次小循环,进入下一次循环判断,写在continue之后的代码不会被运行
语句块2
else:
其他语句块 # else不受continue影响,在循环结束时,仍会被运行
"""
# 遍历输入所有字符,遇到”a“则不输出
str_1 = input("请输入一串字符:") # gkau
i = 0
while i < len(str_1):
if str_1[i] == 'a':
i += 1
continue
print(str_1[i])
i += 1
else:
print("循环结束了!")
10. while的break关键词
"""
while 条件表达式:
语句块1
break # 直接退出整个循环,包括else也不会被执行
else:
其他代码块
"""
# 遍历输入所有字符,遇到”a“直接退出
str_1 = input("请输入一串字符:") # gkau
i = 0
while i < len(str_1):
if str_1[i] == 'a':
break
print(str_1[i])
i += 1
else:
print("循环结束了!")
while练习一
循环计算出1~100之间的偶数之和
i = 1
sum = 0
while i <= 100:
if i % 2 == 0:
sum += i
i += 1
print(sum)
while练习二:自动贩卖机。
从前有一个自动贩卖机,它能实现如下功能:
- 购买商品:牛奶5元、矿泉水2元、可乐3元
- 充值功能:充值10元、充值50元、充值100元
- 用户余额展示
请使用while循环和if分支实现以下功能:
- 用户进入”主功能菜单“,给出菜单选项为:1.购买商品 2.充值 3.退出系统
- 当用户选择【购买商品】时,给出商品菜单如下:1.牛奶5元 2.矿泉水2元 3.可乐3元 4.返回上一级菜单
- 用户选择商品编号时,需要用户输入【购买数量】,并判断用户的余额是否充
- 情况a:余额充足,购买成功,需扣除对应的金额,并停留在商品菜单页
- 情况b:余额不足,购买失败,需给出温馨提示,并停留在商品菜单页
- 当用户选择【充值】时,给出充值菜单如下:1.充值10元 2.充值50元 3.充值100元 4.返回上一级菜单
- 当用户选择充值编号后,需要给用户增加对应的余额,并咨询是否继续充值:
- 情况a:继续充值,则再一次给出充值菜单
- 情况b:不继续充值,则返回”主功能菜单“
- 用户选择【退出系统】,则程序结束
参考代码:
money = 100
opt = ''
num = 1
price = 0
while True:
try:
print('''
主菜单
1.购买商品
2.充值
3.退出系统
''')
opt = input("请输入您的选项: ")
if opt == "1":
while True:
print('''
商品菜单
1.牛奶5元
2.矿泉水2元
3.可乐3元
4.返回上一级菜单
''')
opt = input("请输入您的选项: ")
if opt == "1":
print("购买牛奶")
num = input("请输入购买的数量: ")
if num.isdigit():
price = int(num) * 5
if money >= price:
money -= price
print(f"购买成功!当前余额剩余{money}元")
else:
print("当前余额不足!请先充值")
else:
print("请输入正确的数字")
elif opt == "2":
print("购买矿泉水")
num = input("请输入购买的数量: ")
if num.isdigit():
price = int(num) * 2
if money >= price:
money -= price
print(f"购买成功!当前余额剩余{money}元")
else:
print("当前余额不足!请先充值")
else:
print("请输入正确的数字")
elif opt == "3":
print("购买可乐")
num = input("请输入购买的数量: ")
if num.isdigit():
price = int(num) * 3
if money >= price:
money -= price
print(f"购买成功!当前余额剩余{money}元")
else:
print("当前余额不足!请先充值")
else:
print("请输入正确的数字")
elif opt == "4":
break
else:
print("请输入1~4之间的数字")
elif opt == "2":
while True:
print("进入充值菜单")
print('''
充值菜单
1.充值10元
2.充值50元
3.充值100元
4.返回上一级菜单
''')
opt = input("请输入您要充值的选项: ")
if opt == "1":
print("充值10元")
money += 10
print(f"充值成功,当前余额为:{money}元")
elif opt == "2":
print("充值50元")
money += 50
print(f"充值成功,当前余额为:{money}元")
elif opt == "3":
print("充值100元")
money += 100
print(f"充值成功,当前余额为:{money}元")
elif opt == "4":
break
else:
print("输入有误!")
elif opt == "3":
print("谢谢惠顾,欢迎下次光临")
break
else:
print("输入有误!")
except:
print("系统忙!")
11. for遍历容器
"""
for 变量 in 可遍历的对象: # 【变量】是临时定义的,不需要在for循环外头先定义变量,该变量的作用域仅限于for循环体内部
循环体 # 【可遍历的对象】是容器:字符串、列表、元组、集合、字典、数字集
"""
for i in "中国湖北武汉":
print(i)
for i in ["苹果", "梨子", "鸡蛋"]:
print(i)
for i in ("菠萝", "凤梨", "波罗蜜"):
print(i)
for i in {"草莓", "香蕉", "葡萄"}:
print(i)
dict_1 = {"姓名": "刘亦菲", "年龄": 18, "身高": "165cm"}
for i in dict_1:
print(i, dict_1.get(i))
12. for遍历range函数
for i in range(5): # 0 1 2 3 4
print(i)
for i in range(3, 10): # 3:起始数字 10:结束数字;含头不含尾,即 3、4、5、6、7、8、9
print(i)
for i in range(3, 10, 2): # 3:起始数字 10:结束数字 2:步长 含头不含尾,即3、5、7、9
print(i)
for i in range(-10, -20, -3): # -10 -13 -16 -19
print(i)
13. for...else...语法
"""
for 变量 in 可遍历对象:
执行语句块
else: # 当循环结束时,执行else
其他语句块
"""
for i in range(10):
print(i)
else:
print("遍历完成!")
14. for的continue关键词
"""
for 变量 in 可遍历对象:
循环体
continue # 遇到continue会立即掐断当前这次小循环,直接进入下一次循环,continue后续的代码不会执行
其他语句
else:
其他语句块
"""
list_1 = ["苹果", "梨子", "榴莲", "橙子"]
for i in list_1:
if i == "榴莲":
continue
print(f"{i}买它!")
else:
print("完成购物!")
15. for的break关键词
"""
for 变量 in 可遍历对象:
循环体
break # 遇到break会立即退出循环,else也不会被执行
其他语句
else:
其他语句块
"""
list_1 = ["苹果", "梨子", "榴莲", "橙子"]
for i in list_1:
if i == "榴莲":
break
print(f"{i}买它!")
else:
print("完成购物!")
for练习一: 输入一串字符串,遍历打印每一个字符
str_1 = input("请输入字符串:")
for i in str_1:
print(i)
for练习二: 输入一串字符串,遍历打印每一个字符,遇到字符“a”不打印
str_2 = input("请输入字符串:")
for i in str_2:
if i == "a":
continue
print(i)
for练习三: 输入一串字符串,遍历打印每一个字符,遇到字符“a”退出打印
str_3 = input("请输入字符串:")
for i in str_3:
if i == "a":
break
print(i)
for练习四: 打印九九乘法表
"""
1X1=1
1X2=2 2X2=4
1X3=3 2X3=6 3X3=9
..........
"""
for i in range(1, 10): # i = 3
for j in range(1, i+1): # i+1 = 4 range(1, 4)
print(f"{j}×{i}={i*j}", end="\t")
print()