循环语句

1、while循环

# 循环语句
# 循环语句可以使指定的代码块重复指定的次数
# 循环语句分成两种,while循环 和 for循环
# while循环
# 语法:
#   while 条件表达式 :
#       代码块
#   else :
#       代码块
# 执行流程:
#   while语句在执行时,会先对while后的条件表达式进行求值判断,
#       如果判断结果为True,则执行循环体(代码块),
#       循环体执行完毕,继续对条件表达式进行求值判断,以此类推,
#       直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块

# 条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用!
# while True :
#     print('hello')

# 循环的三个要件(表达式)
# 初始化表达式,通过初始化表达式初始化一个变量
# i = 0

# # 条件表达式,条件表达式用来设置循环执行的条件
# while i < 10 :
#     print(i)
#     # 更新表达式,修改初始化变量的值
#     i += 1

# 创建一个执行十次的循环
i = 0
while i < 10 :
    i += 1
    print(i,'hello')
else :
    print('else中的代码块')

2、循环练习

# 1、求100以内所有的奇数之和
# 获取所有100以内数
# i = 0
# # 创建一个变量,用来保存结果
# result = 0
# while i < 100 :
#     i += 1
#     # 判断i是否是奇数
#     if i % 2 != 0:
#         result += i

# print('result =',result)

# 获取100以内所有的奇数
# i = 1
# while i < 100:
#     print(i)
#     i += 2

# 2、 求100以内所有7的倍数之和,以及个数
i = 7 
# 创建一个变量,来保存结果
result = 0
# 创建一个计数器,用来记录循环执行的次数
# 计数器就是一个变量,专门用来记录次数的变量
count = 0
while i < 100:
    # 为计数器加1
    count += 1
    result += i
    i += 7    

print('总和为:',result,'总数量为:',count)

# 3、水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1**3 + 5**3 + 3**3 = 153)。
# 求1000以内所有的水仙花数

# 获取1000以内的三位数
i = 100
while i < 1000:

    # 假设,i的百位数是a,十位数b,个位数c
    # 求i的百位数
    a = i // 100
    # 求i的十位数
    # b = i // 10 % 10
    b = (i - a * 100) // 10
    # 求i的个位数字
    c = i % 10
    # print(i , a , b , c)
    
    # 判断i是否是水仙花数
    if a**3 + b**3 + c**3 == i :
        print(i)
    i += 1
# 4、获取用户输入的任意数,判断其是否是质数。
num = int(input('输入一个任意的大于1的整数:'))

# 判断num是否是质数,只能被1和它自身整除的数就是质数
# 获取到所有的可能整除num的整数
i = 2
# 创建一个变量,用来记录num是否是质数,默认认为num是质数
flag = True
while i < num:
    # 判断num能否被i整除
    # 如果num能被i整除,则说明num一定不是质数
    if num % i == 0 :
        # 一旦进入判断,则证明num不是质数,则需要将flag修改为false
        flag = False
    i += 1

if flag :
    print(num,'是质数')
else :
    print(num,'不是质数')

3、循环嵌套

# 在控制台中打印如下图形
# *****
# *****
# *****
# *****
# *****
# 

# 创建一个循环来控制图形的高度
# 循环嵌套时,外层循环没执行一次,内存循环就要执行一圈
# i = 0
# while i < 5:
#     # 创建一个内层循环来控制图形的宽度
#     j = 0
#     while j < 5:
#         print("* ",end='')
#         j += 1
#     print()
#     i += 1

#
# *     j<1   i=0
# **    j<2   i=1   
# ***   j<3   i=2
# ****  j<4   i=3
# ***** j<5   i=4
# 
i = 0
while i < 5:
    j = 0
    while j < i + 1:
        print("* ",end='')
        j += 1
    print()
    i += 1
    
# *****    i=0 j=5 j > i
# ****     i=1 j=4
# ***      i=2 j=3
# **       i=3 j=2
# *        i=4 j=1
# i = 0
# while i < 5:
#     j = 5
#     while j > i:
#         print('* ', end='')
#         j -= 1
#     print()
#     i += 1

4、循环嵌套练习

# 练习1:
#   打印99乘法表
#   1*1=1
#   1*2=2 2*2=4
#   1*3=3 2*3=6 3*3=9
#   ...                 9*9=81

# 创建一个外层循环来控制图形的高度
i = 0
while i < 9:
    i += 1
    
    # 创建一个内层循环来控制图形的宽度
    j = 0
    while j < i:
        j += 1
        print(f"{j}*{i}={i*j} ",end="")

    print()

# 求100以内所有的质数
# 创建一个循环,求1-100以内所有的数
i = 2
while i <= 100:
    
    # 创建一个变量,记录i的状态,默认认为i是质数
    flag = True

    # 判断i是否是质数
    # 获取所有可能成为i的因数的数
    j = 2 
    while j < i:
        # 判断i能否被j整除
        if i % j == 0:
            # i能被j整除,证明i不是质数,修改flag为False
            flag = False
        j += 1
    # 验证结果并输出
    if flag :
        print(i)   

    i += 1

5、break 和 continue

# break
# break可以用来立即退出循环语句(包括else)
# continue
# continue可以用来跳过当次循环
# break和continue都是只对离他最近的循环起作用
# pass
# pass是用来在判断或循环语句中占位的

# 创建一个5次的循环
# i = 0
# while i < 5:
#     if i == 3:
#         break
#     print(i)
#     i += 1
# else :
#     print('循环结束')

# i = 0
# while i < 5:
#     i += 1
#     if i == 2:
#         continue
#     print(i)
# else :
#     print('循环结束')

i = 0
if i < 5:
    pass