for 循环: 重复执行语句。在循环次数已知时使用for循环,且所有for循环均可用while循环实现。
while 循环 :在给定的判断条件为 true 时执行循环体,否则退出循环体。在循环次数未知时使用while循环。
嵌套循环: 循环体中嵌套循环

#while循环,只要条件满足,就不断循环,条件不满足时退出循环。
# 其中,执行语句可以是单个语句或语句块;
# 判断条件可以是任何表达式,任何非零、或非空(null)的值均为true
#while 判断条件:
#    执行语句

#理解循环代码案例
#输出1~20
'''num = 1
while num<=20:
    print(num)
    num += 1'''

#重复拨打一个电话号码100次
'''i = 0
while i<100:
   print('拨打电话18200001111')
   i +=1'''
#一般情况下,需要多次重复执行的代码,可以使用循环的方式来完成
#循环不是必须要使用的,但是为了提高代码的重复使用,一般有经验的开发者都采用循环
#while的循环格式
#while 条件:
#    条件满足是,做的事情1
#    条件满足是,做的事情2
#    条件满足是,做的事情3
#    ...(省略)...
#打印下标从1开始
'''i =0
while i<6:
    print('当前是第%d次执行循环'%(i+1))
    print('i=%d'%i)
    i +=1'''
# while 循环注意事项:“i += 1”别忘记写,否则条件永远满足,一直执行
#***while 循环应用案例
#1、计算1~100的累计和(包含1和100)
'''i = 1 #定义变量i为1
sum =0 #定义变量总和sum为0
while i <=100: # 判断条件i小于等于100
    sum =sum+i #sum等于sum+i,遍历一次加一次
    i+=1 #i=i+1
print("1~100的累计和为:%d"%sum) #输入1~100的累计和'''
#2、计算1~100之间的偶数的累积和(包含1和100)
'''i =1 #定义变量i
sum =0 #定义变量sum(累计和)
while i<=100:
    if i%2==0: #如果i除以2等于0
        sum=sum+i
    i+=1
print("1~100偶数的累计和为:%d"%sum)'''

#3、打印1-100以内所有3和5的倍数、3的倍数以及5的倍数
'''num =1
bei3_5=[]
bei3=[]
bei5=[]
while num<=100:
    if(num%3==0)and(num%5==0):
        bei3_5.append(num)
    elif num%3==0:
        bei3.append(num)
    elif num%5==0:
        bei5.append(num)
    num+=1
else:
    print('1-100内是3和5的倍数有:',bei3_5)
    print('1-100内是3的倍数有:',bei3)
    print('1-100内是5的倍数有:',bei5)
    print('循环结束')'''
#循环结果如下:
#1-100内是3和5的倍数有: [15, 30, 45, 60, 75, 90]
#1-100内是3的倍数有: [3, 6, 9, 12, 18, 21, 24, 27, 33, 36, 39, 42, 48, 51, 54, 57, 63, 66, 69, 72, 78, 81, 84, 87, 93, 96, 99]
#1-100内是5的倍数有: [5, 10, 20, 25, 35, 40, 50, 55, 65, 70, 80, 85, 95, 100]
#循环结束
#for循环和while循环,两者的相同点在于都能循环做一件重复的事情;
# 不同点在于:
# for循环是在序列穷尽时停止,
# while循环是在条件不成立时停止。

# while 循环嵌套:就是while里面还有while;
#也可以在循环体内嵌入其他的循环体;
# 如在 while 循环中可以嵌入 for 循环,
# 反之,你可以在 for 循环中嵌入 while 循环。
#while循环嵌套格式
#while1 判断条件:
#    条件1满足是,做的事情1
#    条件1满足是,做的事情2
#    条件1满足是,做的事情3
#    ...(省略)...
#    while2 判断条件:
#        条件2满足是,做的事情1
#        条件2满足是,做的事情2
#        条件2满足是,做的事情3
#        ...(省略)...

#1、while嵌套应用--打印矩形
#   *****
#   *****
#   *****
#   *****
#   *****
'''#(1)while循环打印矩形
i = 1
while i<=5:
    print('*****')
    i+=1 '''
'''#(2)while嵌套打印矩形
i=1
while i<=5: #判断条件;外层控制行数
    j =1
    while j<=5:#判断条件,;内层控制列数
        print('*',end='')
        j+=1#1 2 3 4 5
        #切成为5个星号一行
    print('')
    i+=1  '''
'''#2、while嵌套应用--打印三角形
#   *
#   * *
#   * * *
#   * * * *
#   * * * * *
#只要把打印矩形的基础上把内部的while 循环的条件有j<=5修改成j<=i即可。
i=1
while i<=5: #判断条件;外层控制行数
    j =1
    while j<=i:#判断条件,i有几个就打印几个j;内层控制列数
        print('*',end='')
        j+=1
    print('')
    i+=1   '''

''' #2、while嵌套应用--打印三角形扩展
i=1

while i<=5:
    num = int(input('请输入这行打印多少个:'))
    j=1
    while j<=num:
        print('*',end='')
        j+=1
    print('')
    i+=1
else:
    #print('打印三角形失败')
    print('打印三角形成功')    '''
#3、while 循环嵌套while循环---打印九九乘法表
'''i=1
while i<=9:
    j =1
    while j<=i:#内层控制列,需要j<=i,才可以打印出99乘法表,要不打印错误
        print("%d*%d=%d\t" %(j,i,j*i),end='')#\t添加制表符
        j+=1
    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

'''i=j=1
while i<=9:#外层控制行,
    while j<=i:#内层控制列,需要j<=i,才可以打印出99乘法表,要不打印错误
        print(i,"*",j,"=",j*i,end='\t')#\t添加制表符
        j+=1
    print()
    i+=1
    j=1  '''
#运行结果:
#1 * 1 = 1
#2 * 1 = 2    2 * 2 = 4
#3 * 1 = 3    3 * 2 = 6    3 * 3 = 9
#4 * 1 = 4    4 * 2 = 8    4 * 3 = 12    4 * 4 = 16
#5 * 1 = 5    5 * 2 = 10    5 * 3 = 15    5 * 4 = 20    5 * 5 = 25
#6 * 1 = 6    6 * 2 = 12    6 * 3 = 18    6 * 4 = 24    6 * 5 = 30    6 * 6 = 36
#7 * 1 = 7    7 * 2 = 14    7 * 3 = 21    7 * 4 = 28    7 * 5 = 35    7 * 6 = 42    7 * 7 = 49
#8 * 1 = 8    8 * 2 = 16    8 * 3 = 24    8 * 4 = 32    8 * 5 = 40    8 * 6 = 48    8 * 7 = 56    8 * 8 = 64
#9 * 1 = 9    9 * 2 = 18    9 * 3 = 27    9 * 4 = 36    9 * 5 = 45    9 * 6 = 54    9 * 7 = 63    9 * 8 = 72    9 * 9 = 81

'''#4、打印1~100之间的偶数
#思路:while 循环嵌套if判断语句,代码如下:
i=1
while i<=100:
    if i%2==0:# 如果除等于0,可以打印偶数
        print('i==%d'%i)
    i+=1  '''
'''#5、打印1~100之间的奇数
i=1
while i<=100:
    if i%2==1:#如果除等于1,可以打印奇数
        print('i==%d'%i)
    i+=1   '''

#猜数字小游戏
#要求:产生一个随机数字1~100之间,接受用户输入;
#如果猜对了,游戏结束;猜大了,提示猜大了;猜小了,提示猜小了。
#产生随机数模块使用random。randint(1,101),是一个标准包,
#导入使用即可。
import random
sub_str=random.randint(1,101)#生成1~100的一个随机数
sub_str=66
while 1: #判断条件为1,就是让它一直为真,也就是岁循环,下面通过break来强制停止;
    num =int(input('请输入一位随机数字:'))
    if num > 100 or num  <1: #判断输入的数字是否在1~100之间
        print('输入随机数错误,请输入1~100之前的随机数')
        continue#继续执行
    else:
        if num == sub_str:#如果猜对了,结束循环
            print('猜对了,游戏结束%d'%sub_str)#%d 字符串格式化输出
            break #强制停止
        elif num < sub_str:#如果猜小了,就跳出本次循环,提示猜小了
            print('猜小了,请重新输入数字')
            continue#继续执行
        else: #否则财大了,就提示财大了。就三种情况大,小,等于;前面两种是等于个小于,这个else就是大于。
            print('猜大了,请重新输入数字')
            continue#继续执行