Python:每日一题007
题目:
输出 9*9 乘法口诀表。
程序分析:
分行与列考虑,共9行9列,i控制行,j控制列。
第一版:
for i in range(1,10): for j in range(1,10): print(" %s*%s=%s"%(i,j,i*j),end='')
第二版
for i in range(1,10): for j in range(1,10): print("%d*%d=%2d " % (j, i, i * j),end="") #注意这里的i,j调换了位置 print() #这里换行表示每取完一个i值后进行换行,print自带换行
分析:for i in range(1,10)表示i可以取值到1-9,
当i=1时,j可以取值到1-9,
当i=2时,j可以取值到1-9,
当i=3时,j可以取值到1-9,
...
当i=9时,j可以取值到1-9,
输出结果是这样的
这里可以加入判断条件限制输出
第三版
for i in range(1,10): for j in range(1,10): if j <= i: print("%d*%d=%2d " % (j, i, i * j),end="") print()
输出结果
其他参考解答
解答1:
for i in range (1,10): for j in range(1,10): print(j,"x",i,"=",i*j,"\t",end="") if i==j: print("") break #注意这里的break的使用
分析:当i=1时,j只能取值到1,之后换行,当i=2时,j只能取值到2,依次类推,输出乘法表。
解答2
for i in range(1,10): for j in range(1,i+1): print("%d*%d=%2d "%(j,i,i*j),end="") print()
分析:这里的j取值是根据i来进行取值的,即当i = 1时,j只能取值1,当i=2时,j可以取值1、2,与上面的代码的核心是控制j的取值范围。
解答3
print ('\n'.join([' '.join(['%s*%s=%-2s' % (j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))
分析:将上面的解答2转成列表解析式的形式一行输出。
i=0 j=0 while i<9: i+=1 while j<9: j+=1 print(j,"x",i,"=",i*j,"\t",end="") if i==j: j=0 print("") break
(本文编号007,首发于2018年9月17日,修改于2018年9月18日)
posted on 2018-09-17 23:25 Nicholas-- 阅读(358) 评论(0) 编辑 收藏 举报