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() 
posted @ 2020-07-11 21:15  liyaaa  阅读(344)  评论(0编辑  收藏  举报