最近学习python中刷的一道练习题,使用方法一:for内外层循环要简单些。

拆解了一下思路:a*b= ab

1找到变化的a与b,a变化范围是1-9,所以采取for循环,使用range函数

2看似b的变化范围也是1-10,其实在这里,b是根据a来变化的,比如a=5

那b只需要取1-5即可,即产生5*1,5*2,5*3,5*4,5*5;

所以b在使用for循环过程中,需要注意range的范围(1,a+1)

3接下来就需要打印,这里需要注意3个地方--目标输出的样子如下

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	

注意1:b依赖于a的循环,a是外层循环,b是内层循环,a取7时,要保证b从1-7遍历与a相乘

注意2:在打印时,分清楚输出格式是下面哪种是a*b还是b*a,显然是后者,见上图按行去理解

注意2:打印要加end=‘\t’ 控制两个算式之间的空格,同时在内层循环中注意换行,print()

\\方法一:for嵌套循环

#方法一:嵌套循环
for a in range(1,10):       #外层控制行
    for b in range(1,a+1):    #内层控制列
        print('{0}*{1}={2}'.format(b,a,b*a),end='\t')
    print()

\\方法二:while嵌套

row = 1
while row <= 9:
    column = 1
    while column <= row:
        print('{}*{}={}'.format(column,row,row*column),end='\t')
        column += 1
    print()
    row += 1

 思路:while嵌套需要加入计时器,容易出错些

方法三:列表表达式

L = '\n'.join(
    ['\t'.join(['{}*{}={}'.format(column, row, row * column) for column in range(1, row + 1)]) for row in range(1, 10)])
print(L)

方法四:递归--暂时没想到

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐