2010年1月9日 星期六

九九乘法表

# -*- coding: utf-8 -*-
# Python version: 2.5.4

"""九九乘法表"""


範例一、
# -*- coding: utf-8 -*-
# Python version: 2.5.4


for i in range(1, 10):

    for j in range(1, 10):
        print i ,'*', j ,'=' ,i*j



範例二、
# -*- coding: utf-8 -*-
# Python version: 2.5.4
"""九九乘法表"""
for i in range(1, 10):
    print '\t'.join(['%s*%s=%s%s' % (j,i,i*j) for j in range(1,10)]


範例三、一行的方式
# -*- coding: utf-8 -*-
# Python version: 2.5.4
"""九九乘法表"""

print '\n'.join(['\t'.join(['%d*%d=%d' % (j,i,i*j) for i in range(1,10)]) for j in range(1,10)])

 
短短一行,看似神奇,對初學者來講,卻較難理解!

i這一行巧妙運用''.join  [ ] list 特性 及最後用
for i in range(1,10):
    print i                     #每列完 i 一次會自動換行
另一種寫法 print (['%s' % (i) for i in range(1,10)]) # 列印出 list ['1', ......'9']
print ''.join(['%s' % (i) for i in range(1,10)])  #加' '.join 則將 list ['1', ......'9'] 連接成文字輸出
首先 程式 運用 '\n'.join 將九九乘法 變成文字丟給 print 做列印
並且 將 1*1 = 1   2*1= 2 .......9 * 1= 9 用 '\n' 做換行。

print '\n'.join(['\t'.join(['%d*%d=%d' % (j,i,i*j) for i in range(1,10)]) for j in range(1,10)]

'\n'.join 加入換行 (['\t'.join  每個 1*1 = 1 相乘結果都要 '\t' tab跳格

如現在看不懂,等python學久,再回頭看這一行九九乘法,便一看就懂。

那如果要以
for x in (1,10):
   for y in (1,10):
        print ('%s*'%s=%s' % (x, y, x*y))
輸出 九行九排 排列整齊的九九乘法呢?
每列完一次,程式便會換行, 我們不想它換行的話,可加逗點,
所以便變成:
for x in range(1,10):
    for y in range(1,10):
        print ('%s*%s=%s \t' % (x,y,x*y)),
    print
    

沒有留言:

張貼留言