Python小白语法基础14(循环语法)

0) 参考文章

1) while循环

  • 语法
  • while 表达式:
        循环语句块
  • 案例
  • # 案例1: 打印10次hello world
    count = 0  # (1) 初始变量
    while count < 10:  # (2) 判断表达式
        print("hello world")
    
        count += 1  # (3) 步进语句 count = count+1
    
    
    # 案例2: 打印1-100
    
    # 方式1:
    n = 0  # (1) 初始变量
    while n < 100:  # (2) 判断表达式
        # 逻辑代码块开始
        print(n + 1)  # 原本输出0-99, 现在输出1-100
        # 逻辑代码块结束
        n += 1  # (3) 步进语句 count = count+1
    
    
    # 方式2:
    n = 0  # (1) 初始变量
    while n < 100:  # (2) 判断表达式
        n += 1  # (3) 步进语句 count = count+1
        # 逻辑代码块开始
        print(n)  # 先+1 再输出, 结果1-100
        # 逻辑代码块结束
    
    # 方式3:
    n = 10  # (1) 初始变量
    while n < 111:  # (2) 判断表达式
        print(n) # 输出10-110
        n += 1  # (3) 步进语句 count = count+1
    
    
    # 案例3: 打印100-1
    
    # 方式1
    n = 0  # (1) 初始变量
    while n < 100:  # (2) 判断表达式
        # 逻辑代码块开始
        print(100-n)  # 随着n的变大,输出数字变小,,总和不变,完成倒序输出
        # 逻辑代码块结束
        n += 1  # (3) 步进语句 count = count+1
    
    # 方式2
    n = 100  # n: 100-1地变化
    while n >= 1:
        print(n)  # 从100开始,依次递减,直到值为1
        n -= 1
    

2) for循环

  • 语法
  • for i in 容器对象:
        循环语句
  • 案例
  • # 案例1:
    name = "yuan"
    for i in name:
        # print("hello world")  # 4个字符 输出4次 hello world
        # print(i,type(i))  # 依次输出 y u a n
        print(i.upper()) # 依次输出 Y U A N
    
    # 案例2:
    l = [1, 2, 3, 4, 5]
    ret = 0
    for i in l:  # 依次遍历5个元素: 1,2,3,4,5
        ret += i
    
    print(ret)  # 15
    
    # 案例3:
    l = [12, 34, 556, 41, 79, 88, 123, 456]
    ret = 0
    for i in l:
        ret += i
    
    print(ret)

3) 案例

  • while累积和
  • # 计算1-100的和
    count = 1  # 初始化
    s = 0
    while count <= 1000:
        # 逻辑代码块开始
        s += count  # 每次循环的值都累加在s中
        # 逻辑代码块结束
        count += 1  # 控制循环逻辑
    
    print(s)
  • while随机验证码
  • 
    # 正常拼接
    s1 = "hello"
    s2 = "yuan"
    print(s1 + s2) # helloyuan
    
    
    import random
    import string
    
    # 全字符: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    print(string.digits+string.ascii_lowercase+string.ascii_uppercase)
    
    # 全字符: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    # string.ascii_letters: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    print(string.digits+string.ascii_letters)
    
    
    # 生成随机100个字符
    count = 0
    s = ""
    while count < 100:
        # 逻辑代码块开始
        char = random.choice(string.digits+string.ascii_letters)
        # print(char)
        s += char  # 存储字符
        # 逻辑代码块结束
        count += 1
    
    print("s:::",s)
  • for遍历元素
  • for i in range(1, 101):  # 起始 结束 步调1
        print(i)
    
    for i in range(55, 90):  # 起始 结束 步调1
        print(i)
    
    for i in range(1, 101, 1):
        print(i)  # [1,2,3,4,...100]
    
    for i in range(1, 101, 2):  # 起始 结束 步调2
        print(i)  # [1,3,5,7,9,....99]
    
    for i in range(1, 101, 3):  # 起始 结束 步调3
        print(i)  # [1,4,7,10,...]
    
    # step默认为1,如果是正数,范围就是从小到大,如果是负数,范围就是从大到小
    
    for i in range(100, -1, -1):  # 从大到小 倒序
        print(i)  # [100,99,...,3,2,1,0]

4) 嵌套案例

  • 打印偶数
  • for i in range(1, 101):  # 遍历[1,100]
        if i % 2 == 0:  # 输出偶数
            # i是偶数
            print(i)
    
    for i in range(2, 101,2):  # 同上 输出偶数
        print(i)
  • 打印指定数
  • # 打印出从 1 到 100 的所有整数,
    # 将整除 3 的数字打印为 "Fizz",
    # 整除  5 的数字打印为 "Buzz",
    # 同时整除  3 和 5 的数字打印为 "FizzBuzz"。
    for i in range(1, 101):  # 从1到100
        if i % 3 == 0 and i % 5 == 0:
            print(f"{i}:FizzBuzz")  # 同时整除3和55
        elif i % 3 == 0:
            print(f"{i}:Fizz")  # 整除3
        elif i % 5 == 0:
            print(f"{i}:Buzz")  # 整除5
        else:
            print(f"{i}:各种情况都不符合!")
    
        print(f"完成数字{i}判断!")
  • 无限循环
  • import random
    
    coin = 100
    exp = 100
    blood = 100
    chest = []
    
    for i in range(3):
        room = input("请输入房间名:")
        if room == "怪物房":
            print("遇到了史莱姆")
            choice = input("【1.攻击/2.逃跑】")
            if choice == "1":
                # 选择攻击
                print("选择干史莱姆!")
                is_success = random.choice([100, 200])  # 100:成功  200:失败
                if is_success == 100:
                    print("战胜史莱姆!")
                    coin += 20
                    exp += 20
                else:
                    print("没打过史莱姆!")
                    coin -= 20
                    exp -= 20
                    blood -= 20
            elif choice == "2":
                # 逃跑的逻辑
                print("逃跑ing")
                coin -= 20
            else:
                print("无效输入!")
    
            print("离开怪物房")
        elif room == "宝箱房":
            print("你打开了宝箱,获得了钥匙")
            chest.append("钥匙")
            print("当前宝贝:", chest)
        elif room == "陷阱房":
            print("你触发了陷阱,受到了毒箭的伤害")
            blood -= 10
        elif room == "商店":
            print(f"玩家的金币:{coin},血值:{blood}")
            print("一个金币买一个药水对应10个血值")
    
            is_buy = input("是否购买药水【Y/N】")
            if is_buy.upper() == "Y":
                num = int(input("购买几瓶药水?"))
                coin -= 1 * num
                blood += 10 * num
                print(f"当前玩家的金币:{coin},血值:{blood}")
            elif is_buy.upper() == "N":
                print("退出商店!")
            else:
                print("无效输入!")
        print(f"""
           玩家信息:
              金币:{coin}
              经验值:{exp}
              血值: {blood}
           """)
    
    print("游戏结束")
    
  • 扑克牌
  • poke_types = ['♥️', '♦️', '♠️', '♣️']
    poke_nums = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
    
    for pn in poke_nums:  # 遍历数字 遍历13次
        # print(pn)  # 打印数字
        # print(poke_types) # 打印类型
        for pt in poke_types:  # 遍历类型 遍历4次
            print(f"{pt}{pn}", end=" ")  # 拼接
    
        print()  # 利用默认的"\n"机制进行分割  4个一组

5) 跳出循环

  • 退出while循环
  • while True:
        userInput = input("请输入一个数字(输入q退出):")
        # 选择退出机制
        if userInput.upper() == "Q":
            break
    
        number = int(userInput)
        square = number ** 2
        print(f"{number} 的平方是 {square}")
    
    print("程序结束")
    
    
  • 退出for循环
  • for i in range(10):
        userInput = input("请输入一个数字(输入q退出):")
        # 选择退出机制
        if userInput.upper() == "Q":
            break
    
        number = int(userInput)
        square = number ** 2
        print(f"{number} 的平方是 {square}")
    
    print("程序结束")
  • 跳过循环
  • # 打印除了88以外的1-100所有值
    
    # 方式1
    for i in range(1, 101):
        if i == 88:
            continue  # 退出当次循环,当次continue下面的代码不再执行
        print(i)  # 打印除去88的数字
    
    # 方式2
    for i in range(1, 101):
        if i != 88:
            print(i)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值