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