zoukankan      html  css  js  c++  java
  • day6:双向循环练习&pass_break_continue&for循环

    双向循环练习

    1.打印10行10列的小星星(两个循环)

     1 # j 外循环用来控制行数
     2 j = 0 
     3 while j < 10:
     4     # i 打印一行十个星星
     5     i = 0
     6     while i < 10:
     7         # 写上循环的逻辑
     8         print("*",end="")
     9         i+=1
    10     # 打印换行
    11     print()
    12         
    13     j+=1

    2.打印10行10列小星星(隔列换色)

     1 i = 0
     2 while i < 10:
     3     j=0
     4     while j<10:
     5         # 内部循环逻辑
     6         if j%2==0:
     7             print("",end="")
     8         else:
     9             print("",end="")
    10         j+=1
    11     print()
    12         
    13     i+=1

    3.打印10行10列小星星(隔行换色)

     1 """
     2 外层循环动一次
     3 内层循环动10次
     4 外层循环动的慢
     5 内层循环动的快
     6 """
     7 i = 0
     8 while i<10:
     9     # 打印隔列换色星星
    10     j = 0
    11     while j < 10:
    12         # i 隔列换色
    13         if i%2 == 0:
    14             print("",end="")
    15         else:
    16             print("",end="")
    17         j+=1
    18 
    19     # 打印换行
    20     print()
    21     i+=1

    4.99乘法表

     1 # i控制行
     2 i=1
     3 while i<=9:
     4     # j控制列
     5     j=1
     6     while j<=i:
     7         # 打印表达式 
     8         print("%d*%d=%2d " % (i,j,i*j),end="")
     9         j+=1
    10     # 打印换行
    11     print()
    12     i+=1

    5.99乘法表反向

    1 i=9 # 9*1 9*2 9*3 ....
    2 while i>=1:
    3     j=1
    4     while j<=i:
    5         print("%d*%d=%2d " % (i,j,i*j),end="")
    6         j+=1
    7     print()
    8     
    9     i-=1

    6.99乘法表空格正向

     1 # ???如何打印在每行打印空格???
     2 '''
     3 第一行循环8组空格 8~1 是循环8组空格
     4 第二行循环7组空格 7~1 是循环7组空格
     5 ......
     6 第八行循环1组空格 1 是循环1组空格
     7 第九行 不需要空格 所以 k>0
     8 '''
     9 i = 1
    10 while i<=9:
    11 
    12     # 打印空格
    13     k=9-i
    14     while k>0:
    15         print("       " , end="")
    16         k-=1
    17     # 打印表达式
    18     j=1
    19     while j<=i:
    20         print("%d*%d=%2d " % (i,j,i*j),end="")
    21         j+=1
    22         
    23     print()
    24     
    25     i+=1

    7.99乘法表空格反向

     1 i=9
     2 while i<=1:
     3     # 打印空格
     4     k = 9-i
     5     while k>0:
     6         print("       " , end="")
     7         k-=1
     8     # 打印表达式
     9     j=1
    10     while j<=i:
    11         print("%d*%d=%2d " % (i,j,i*j),end="")
    12         j+=1
    13     print()
    14     i-=1

    8.吉利数(方法一)

     1 '''
     2 得到个位: 123%10=3
     3 得到十位:123//10%10=2
     4 得到百位:123//100=1
     5 '''
     6 i = 100
     7 while i < 1000:
     8     gewei = i%10
     9     shiwei = i//10%10
    10     baiwei = i//100
    11     # 111 222......888 999
    12     if gewei == shiwei and shiwei == baiwei:
    13         print(i)    
    14     # 123 234......678 789
    15     elif shiwei  == gewei-1 and  shiwei == baiwei+1:
    16         print(i)
    17     # 987 876......432 321
    18     elif shiwei == gewei+1 and shiwei == baiwei-1:
    19         print(i)
    20     i+=1
    21     

    9.吉利数(方法二)

     1 i = 100
     2 while i <1000:
     3     strvar=str(i)
     4     baiwei = int(strvar[0])
     5     shiwei = int(strvar[1])
     6     gewei = int(strvar[2])
     7     if gewei == shiwei and shiwei == baiwei:
     8         print(i)
     9     elif shiwei  == gewei-1 and  shiwei == baiwei+1:
    10         print(i)
    11     elif shiwei == gewei+1 and shiwei == baiwei-1:
    12         print(i)
    13     i+=1

    10.百钱买百鸡

     1 '''
     2 公鸡x 母鸡y 小鸡z
     3 公鸡1块钱1只,母鸡3块钱一只,小鸡5毛钱一只
     4 问: 用100块钱买100只鸡,有多少种买法?
     5 """
     6 """
     7 穷举法:把数拿出来,一个一个试
     8 x{1,2}
     9 y{3,4}
    10 z{5,6}
    11 x+y+z = 10 列出来
    12 1+3+5 = 9 不要
    13 1+3+6 = 10 要
    14 1+4+5 = 10 要
    15 1+4+6 = 11 不要
    16 
    17 2 + 3 + 5 = 10 要
    18 2 + 3 + 6 = 11 不要
    19 2 + 4 + 5 = 11 不要
    20 2 + 4 + 6 = 12 不要
    21 """
    22 
    23 """
    24 # 两个条件同时满足
    25 x+y+z = 100
    26 x*1 + y*3 + z*0.5 = 100
    27 '''
    28 
    29 count = 0
    30 x = 0 
    31 # 公鸡
    32 while x <=100:
    33     # 母鸡
    34     y = 0
    35     while y <=33:
    36         # 小鸡
    37         z = 0
    38         while z <=100:
    39             if x+y+z == 100 and x*1 + y*3 + z*0.5 == 100:
    40                 count += 1
    41                 print(x,y,z)
    42             z+=1
    43         y+=1
    44     x+=1
    45     
    46 print(count)

    -------------------------------------------------------------------------------------------------------------

    关键字:pass,break,continue

    1.pass 过 占位

    2.break 终止当前循环

    注意的是!!!终止的是当前循环!!!

     1 i = 1
     2 while i <= 3:
     3     j = 1
     4     while j <= 3:
     5         if j == 2:
     6             break
     7         print(i,j)
     8         j += 1
     9     i += 1
    10 # 输出(1,1)(2,1)(3,1)
    11 # 只终止了while j <= 3这个内层循环,并没有终止while i <= 3这个外层循环   

    3.continue 跳过当前循环,从下一次循环开始

     1 # 打印1~10 跳过8
     2 i = 1
     3 while i <= 10:
     4 
     5     if i == 8:
     6         # 需手动自增加1. 当执行continue时,后面的代码不执行,跳到while循环的条件判断处,会造成死循环
     7         i += 1
     8         continue
     9     print(i)
    10     i += 1

    ----------------------------------------------------------------------------------------------------------

    for循环

    遍历 == 循环 == 迭代

    1.for循环和while循环的区别

    for主要用于遍历数据
    while在遍历数据时,有局限性

    2.for循环格式:

    for 变量 in 可迭代对象:
      code1
      code2
    可迭代对象(容器类型数据,range对象,迭代器)

    3.for循环可以遍历字符串,集合,列表,元组,字典。其中遍历字典时是遍历字典的key

    4.遍历不等长的二级容器

    1 # 用嵌套for循环来遍历不等长的二级容器
    2 container = [["6.6","YiNuo","Ice"],("JiuC","JiuLong")]
    3 for i in container:
    4     for j in i:
    5         print(j)

    5.遍历等长的二级容器

    1 # 等长的二级容器每个里面都是3个元素,分别用a,b,c接收它们
    2 container = [("Mike","Alan","Rick") , ("Linda","Nike","Bruth") , ("556","762","994")  ]
    3 for a,b,c in container:
    4     print(a,b,c)

    6.range对象

    range(开始值,结束值,步长)
    结束值本身取不到,取到结束值之前的那个数

     1 # 只有一个值  0~5
     2 for i in range(6):
     3     print(i) # 0,1,2,3,4,5
     4 
     5 # 只有两个值
     6 for i in range(3,8):
     7     print(i) # 3,4,5,6,7
     8 
     9 # 只有三个值
    10 for i in range(1,10,3):
    11     print(i)  # 1,4,7
    12 
    13 # 倒序打印5 ~ 1
    14 for i in range(5,0,-1):
    15     print(i) # 5,4,3,2,1

    7.关于while循环和for循环适用场景的总结

    while循环:较为复杂的逻辑
    for循环:数据的遍历
    while和for部分代码可以互相转换

    8.while循环代码和for循环代码的相互转换

     1 i = 1
     2 while i <= 9:
     3     j = 1
     4     while j<=i:
     5         print("%d*%d=%2d " % (i,j,i*j),end="")
     6         j+=1
     7     print()
     8     i+=1
     9 
    10 
    11 for i in range(1,10):
    12     for j in range(1,i+1):
    13         print("%d*%d=%2d " % (i,j,i*j),end="")
    14     print()    
    15     
  • 相关阅读:
    Java--基础阶段--2Java基本语法-2.6数组
    Java--基础阶段--2Java基本语法-2.4运算符
    Java--基础阶段--2Java基本语法-2.3.5进制间转化
    Java--基础阶段--2Java基本语法-2.3.4原码/反码/补码
    Java--基础阶段--2Java基本语法-2.3.3ASCII码/Unicode编码/UTF-8
    Java--基础阶段--2Java基本语法-2.3.2整数/浮点/字符/布尔类型
    Java--基础阶段--2Java基本语法-2.3.1变量
    Java--基础阶段--2Java基本语法-2.2.2Java中的名称命名规范
    Java--基础阶段--2Java基本语法-2.2.1标识符
    Java--基础阶段--第4章: 面向对象编程(上)
  • 原文地址:https://www.cnblogs.com/libolun/p/13282027.html
Copyright © 2011-2022 走看看