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. 用户进入”主功能菜单“,给出菜单选项为:1.购买商品 2.充值 3.退出系统
  2. 当用户选择【购买商品】时,给出商品菜单如下:1.牛奶5元 2.矿泉水2元 3.可乐3元 4.返回上一级菜单
    • 用户选择商品编号时,需要用户输入【购买数量】,并判断用户的余额是否充
      • 情况a:余额充足,购买成功,需扣除对应的金额,并停留在商品菜单页
      • 情况b:余额不足,购买失败,需给出温馨提示,并停留在商品菜单页
  3. 当用户选择【充值】时,给出充值菜单如下:1.充值10元 2.充值50元 3.充值100元 4.返回上一级菜单
    • 当用户选择充值编号后,需要给用户增加对应的余额,并咨询是否继续充值:
      • 情况a:继续充值,则再一次给出充值菜单
      • 情况b:不继续充值,则返回”主功能菜单“
  4. 用户选择【退出系统】,则程序结束

参考代码:

                    
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()