【黑马python】基础 4.Python 循环语句 while for range

笔记汇总目录

Python 循环语句

image

while循环的基础语法

while格式

  • 注意:条件结果为布尔类型;冒号;代码块缩进

  • 新的注意点:设置循环终止条件

image

  • 代码示例

    # 输出100次
    n = 0
    while n < 100:
        print(f"i = {n+1}")
        n += 1
    """
    输出结果:
    i = 1
    i = 2
    i = 3
    ...
    ...
    i = 99
    i = 100
    """
    
  • 练习:求1-100的和

    image

  • 代码示例

    # 求1-100的和
    count = 0
    n = 1
    while n <= 100:
        count += n
        n += 1
    print(f"1-100的和:{count}")  # 1-100的和:5050
    

while循环案例:猜数字

image

  • 不同思路

    • 如果不用break,可以设置flag=True,并在结束时设置flag=False

  • 代码示例

    # 猜1-100的随机数
    import random
    num = random.randint(1, 100)
    count = 0
    
    while True:
        count += 1
        guess = int(input("输入你猜的数字:"))
        if guess == num:
            print(f"恭喜你,第{count}次就猜对了!")
            break
        elif guess > num:
            print("太大了")
        else:
            print("太小了")
    

while循环的嵌套应用

  • while循环的注意点

    • 空格缩进决定层级关系

    • 一定要设置循环结束的条件

  • 使用难点

    • 层级越多,越复杂,细心+耐心
      image
  • 代码示例

    # while循环的嵌套
    i = 1
    while i <= 100:
        print(f"今天是第{i}天")
        j = 1
        while j <= 10:
            print(f"送给小美的第{j}朵花")
            j += 1
        i += 1
        print("向小美表白")
    
    print(f"今天是第{i-1}天,表白成功啦")  # 注意这里是i-1,否则上一步的i最后是大于100的
    

while循环案例:九九乘法表

image

  • print输出不换行

    • print语句:默认换行

    • 输出不换行:加 end=' '

      • 单引号里的空格:体现到 hello world 中间的空格上
      • 单引号里不加空格:两条输出内容会连在一起:helloworld
      print("hello", end=' ')  # 单引号里的空格会体现到 hello world 中间的空格上
      print("world")
      # hello world
      
  • 制表符 \t

    • 字符串中的特殊符号:\t
    • 效果等同于在键盘按下制表符 tab键
    • 作用:多行字符串进行对齐
      image
      print("hello\tworld")
      print("google\tmap")
      # hello  	world
      # google	map
      
  • 案例分析

image

  • 代码示例

    # 九九乘法表
    i = 1
    while i <= 9:
        j = 1
        while j <= i:
            print(f"{j} * {i} = {j * i}", end='\t')  # 或者 print(f"{j} * {i} = {j * i}\t", end='')
            j += 1
        print("")  # print空内容,等效于输出一个换行
        i += 1
    """
    1 * 1 = 1	
    1 * 2 = 2	2 * 2 = 4	
    1 * 3 = 3	2 * 3 = 6	3 * 3 = 9	
    1 * 4 = 4	2 * 4 = 8	3 * 4 = 12	4 * 4 = 16	
    1 * 5 = 5	2 * 5 = 10	3 * 5 = 15	4 * 5 = 20	5 * 5 = 25	
    1 * 6 = 6	2 * 6 = 12	3 * 6 = 18	4 * 6 = 24	5 * 6 = 30	6 * 6 = 36	
    1 * 7 = 7	2 * 7 = 14	3 * 7 = 21	4 * 7 = 28	5 * 7 = 35	6 * 7 = 42	7 * 7 = 49	
    1 * 8 = 8	2 * 8 = 16	3 * 8 = 24	4 * 8 = 32	5 * 8 = 40	6 * 8 = 48	7 * 8 = 56	8 * 8 = 64	
    1 * 9 = 9	2 * 9 = 18	3 * 9 = 27	4 * 9 = 36	5 * 9 = 45	6 * 9 = 54	7 * 9 = 63	8 * 9 = 72	9 * 9 = 81	
    """
    

for循环的基础语法

  • 格式注意点

    • 几个要素:for i (临时变量) in 数据集(序列) (冒号)

    • for循环:无法定义循环条件(只能依次取出,并处理)

    • 理论上讲,Python的for循环无法构建无限循环(被处理数据集不可能无限大)

image
image

  • 代码示例

    name = "itheima"
    for x in name:
        # 将name的内容:挨个取出,赋值给临时变量x
        print(x)
    
  • 练习:数一数有几个a

image

  • 代码示例

    # 数一数有几个a
    name = "itheima is a brand of itcast"
    count = 0
    for x in name:
        if x == 'a':
            count += 1
    print(f"{name}中共含有:{count}个字母a")
    # itheima is a brand of itcast中共含有:4个字母a
    

range语句

  • 序列类型

    • 内容 可以一个个 依次取出 的一种类型 (例如:字符串、列表、元祖等)
    • for循环本质上:遍历:序列类型
    • range语句:可以获取一个简单的数字序列
  • range语句

    • 格式:range(start, stop[, step])

    • start默认为0,step默认为1,stop不包含在结果中

image
image

  • range语句注意点

    • 直接print(range()):

      • 直接原样输出range(start, end), 而不是数字序列
    • 不合理序列:不输出

    • 不同的step

      • step不能为0:会报错 (ValueError: range() arg 3 must not be zero)
      • step不合理:不输出
  • 代码示例

    print(range(10))  # range(0, 10)
    
    for i in range(10):
        print(i, end=' ')  # 0 1 2 3 4 5 6 7 8 9
    
    print("")
    for i in range(5, 12):
        print(i, end=' ')  # 5 6 7 8 9 10 11 
    
    print("")
    for i in range(10, 0, -2):  # ValueError: range() arg 3 must not be zero
        print(i, end=' ')  # 10 8 6 4 2 
    
  • 练习:有几个偶数

image

  • 代码示例

    # 有几个偶数
    num = int(input("请输入数字范围:"))
    count = 0
    for i in range(1, num):
        if i % 2 == 0:
            count += 1
    print(f"1到{num}范围内,一共有:{count}个偶数")
    

for循环临时变量作用域

  • 临时变量在for循环外

    • 实际可以访问到,但是规定不建议:

      • for结束后,中间加其他代码,临时变量依然可以访问到
    • 优雅的访问方式:预先在for循环外定义变量存储它

image

  • 代码示例

    # 临时变量的作用域:不建议但实际能执行
    # i = 0  # 建议在for循环之前,就定义好变量
    for i in range (1, 10, 2):
        print(i,end=' ')  # 1 3 5 7 9 
    print("")
    print(i)  # 9
    

for循环的嵌套应用

  • for循环嵌套注意点:空格缩进确定层次关系

  • for循环和while循环:可以相互嵌套

image

  • 代码示例

    # for循环嵌套
    i = 0
    for i in range(1, 101):
        print(f"今天是第{i}天:")
        for j in range(1, 11):
            print(f"给小美的第{j}朵花")
        print(f"和小美表白的第{i}天")
    print(f"第{i}天,表白成功了")
    

for循环案例:九九乘法表

image

  • 代码示例

    # for循环:九九乘法表
    for i in range(1, 10):
        for j in range(1, i+1):  # 注意这里是 i + 1
            print(f"{j} * {i} = {j * i}", end='\t')
        print("")  # print() 即可
    

continue和break

  • 对比:循环是本关复活点

    • continue:临时中断 -- 掉了一血,回到复活点重新开始

    • break:永久中断 -- 本关通关了,跳过,去下一关

  • continue

image
image

  • 代码示例

    # continue
    for i in range(1, 3):
        print("语句1:外层循环")  # 语句1:外层循环2次
        for j in range(1, 5):
            print("语句2:内层循环")  # 语句2:内存循环4次
            continue;
            print("语句3:内存循环")  # 语句3:被跳过
    print("语句4:跳出所有循环")  # 语句4:所有循环结束后,执行1次
    """
    输出结果:
    语句1:外层循环
    语句2:内层循环
    语句2:内层循环
    语句2:内层循环
    语句2:内层循环
    语句1:外层循环
    语句2:内层循环
    语句2:内层循环
    语句2:内层循环
    语句2:内层循环
    语句4:跳出所有循环
    """
    
  • break

image
image

  • 代码示例

    # break
    for i in range(1, 4):
        print("语句1:外循环")  # 语句1:外层循环3次
        for j in range(1, 6):
            print("语句2:内循环")  # 语句2:内存循环5次,执行1次后跳出
            break
            print("语句3:内循环")  # 语句3:被跳过
        print("语句4:外循环") # 语句4:break跳出内循环后,继续执行外循环中的语句
    print("语句5:跳出所有循环")  # 语句5:所有循环结束后,执行1次
    
    """
    语句1:外循环
    语句2:内循环
    语句4:外循环
    语句1:外循环
    语句2:内循环
    语句4:外循环
    语句1:外循环
    语句2:内循环
    语句4:外循环
    语句5:跳出所有循环
    """
    

循环综合案例

image

  • 代码示例

    # 练习:发工资
    import random
    
    count = 10000
    for i in range(1, 21):
        score = random.randint(1, 10)
        if score < 5:
            print(f"员工{i},绩效分{score},低于5,不发工资,下一位。")
            continue  # continue
        else:
            if count >= 1000:
                count -= 1000
                print(f"向员工{i}发放工资1000元,账户余额为{count}")
            else:
                print("工资发完了,下个月领取吧")
                break  # 使用break
    """
    向员工1发放工资1000元,账户余额为9000
    员工2,绩效分1,低于5,不发工资,下一位。
    员工3,绩效分4,低于5,不发工资,下一位。
    向员工4发放工资1000元,账户余额为8000
    向员工5发放工资1000元,账户余额为7000
    员工6,绩效分3,低于5,不发工资,下一位。
    员工7,绩效分1,低于5,不发工资,下一位。
    员工8,绩效分3,低于5,不发工资,下一位。
    向员工9发放工资1000元,账户余额为6000
    向员工10发放工资1000元,账户余额为5000
    员工11,绩效分2,低于5,不发工资,下一位。
    向员工12发放工资1000元,账户余额为4000
    员工13,绩效分3,低于5,不发工资,下一位。
    向员工14发放工资1000元,账户余额为3000
    员工15,绩效分1,低于5,不发工资,下一位。
    向员工16发放工资1000元,账户余额为2000
    向员工17发放工资1000元,账户余额为1000
    员工18,绩效分4,低于5,不发工资,下一位。
    员工19,绩效分1,低于5,不发工资,下一位。
    向员工20发放工资1000元,账户余额为0
    """
    

参考链接

END

posted @ 2025-10-13 16:42  anliux  阅读(7)  评论(0)    收藏  举报