• (15)while循环


    循环结构 : while
    循环结构的特点:减少代码的冗余,提高代码的效率
    注意:只要是循环一定要有判断条件退出循环,不然就成了死循环,程序会一直在内存执行,直到内存耗尽,暴毙.....
    语法形式: while 条件表达式: code1 code2 (一)打印数字1~10 i = 1 # 定义一个初始化的变量 # 写一个循环的条件 while i <= 10: # 代码体,写逻辑 print(i) i += 1 # 程序每跑一遍,i就+1,直到1=10,循环停下来 执行结果: 1 2 3 4 5 6 7 8 9 10 (二) 计算1~100的累加和 ?
    写法一: i = 1 total = 0 while i <= 100: total += i i += 1 print(total) 执行结果: 5050
    写法二:
    i = 1
    total = 0  # 初始化一个变量
    flag = True   #  写一个标志符
    while flag: # 只有为真的时候才会循环
        total += i
        i += 1
        # 当i位101的时候,为了避免在回到循环判断中,直接在此处终止
        if i == 101:
            flag = False  # 更改标志符状态
    print(total)
    执行结果:
    5050
    
    (三)打印一行十个小星星
    (1)最简单的方法:功能的确实现了,但是看起来比较low
    print("*"*10)
    执行结果:
    **********
    (2)升级版:用循环写
    i = 0
    while i < 10:
        print("*", end="") # end=''以什么结尾,这里以空制符串结尾,保证星星不会换行,打印在一排
        i += 1
    执行结果:
    **********
    (3)进阶版:
    i = 0
    strvar = ''
    while i < 10:
        strvar += "*"
        i += 1
    print(strvar)
    执行结果:
    **********
    (四)while和if的混合使用
    (1)要求:打印一行十个小星星 奇数个打印★ 偶数个打印☆
    i = 0
    while i < 10:
        if i % 2 == 0:
            print("★", end="")
        else:
            print("☆", end="")
        i += 1
    执行结果:
    ★☆★☆★☆★☆★☆
    (2)要求:一个循环 打印十行十列隔列变色小星星
    i = 0
    while i < 100:
        if i % 2 == 0:
            print("☆", end="")
        else:
            print("★", end="")
        if i % 10 == 9:  # 换行,i是从0开始的,i逢9就要开始换行
            print()
        i += 1
    执行结果:
    ☆★☆★☆★☆★☆★
    ☆★☆★☆★☆★☆★
    ☆★☆★☆★☆★☆★
    ☆★☆★☆★☆★☆★
    ☆★☆★☆★☆★☆★
    ☆★☆★☆★☆★☆★
    ☆★☆★☆★☆★☆★
    ☆★☆★☆★☆★☆★
    ☆★☆★☆★☆★☆★
    ☆★☆★☆★☆★☆★
    
    (五)while循环的嵌套(多个while循环)
    (1)用两个循环打印十行十列变色小星星
    i = 0
    while i < 10:  # 外循环
        j = 0
        while j < 10:  # 内循环
            if i % 2 == 0:  # 控制行
                print("★", end="")
            else:
                print("☆", end="")
            j += 1  # 程序运行一次,j+1,一直满足内循环,所以外循环走一次,内循环走十次
        print()  # 换行,外面的循环每执行一次,就打印一个换行
        i += 1
    执行结果:
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    (2)打印99乘法口诀表
    i = 1
    while i <= 9:
        j = 1
        while j <= i:
            print("%d*%d=%-2d" % (j, i, i * j), end=" ") # end这里有空格
            j += 1
        print()  # 换行
        i += 1
    执行结果:是不是beautiful
    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 
    作业:自己下去试一下99乘法口诀的其他打发,比如,方向相反的乘法口诀
    (3)百钱买百鸡,公鸡1块钱一只,母鸡3块钱一只,小鸡5毛钱一只,100块钱买100只鸡.并且三种鸡都要买到,有多少种买法?
    x = 1
    while x < 99: # 每种鸡最多买98只
        y = 1
        while y < 33:
            z = 1
            while z < 99:
                # 三款鸡加一起是100只 三款鸡价格加一起是100块 两个条件同时满足
                if (x + y + z == 100) and (x + 3 * y + 0.5 * z == 100):
                    print(x, y, z)
                z += 1
            y += 1
        x += 1
        
    执行结果:
    5 19 76
    10 18 72
    15 17 68
    20 16 64
    25 15 60
    30 14 56
    35 13 52
    40 12 48
    45 11 44
    50 10 40
    55 9 36
    60 8 32
    65 7 28
    70 6 24
    75 5 20
    80 4 16
    85 3 12
    90 2 8
    95 1 4
    

      

      

     

  • 相关阅读:
    QString乱谈(2)
    QString 乱谈(1)
    Mingw版QtCreator调用VS编译的C++库的方法
    webrtc doubango linphone
    Neo4j图数据库配置文件详解
    Spring系列之Spring常用注解总结
    写一手好SQL很有必要
    史上最全的MySQL高性能优化实战总结!
    elasticsearch 亿级数据检索案例与原理
    Rust 优劣势: v.s. C++ / v.s. Go(持续更新)
  • 原文地址:https://www.cnblogs.com/lyj910313/p/10799815.html
Copyright © 2020-2023  润新知