python 一行代碼打印九九乘法表


如果沒有一行的限制,通常代碼可以這樣寫:

1 for x in range(1,10):
2     for y in range(1, x+1):
3         print("%s*%s=%s"%(y, x, x*y), end="\t")
4     print()

寫在一行的代碼如下:

print("\n".join("\t".join(["%s*%s=%s"%(y, x, x*y) for y in range(1, x+1)]) for x in range(1, 10)))

簡單分析一下這行代碼,按照執行順序先拆出下面這一句:

  1. "\t".join(["%s*%s=%s"%(y, x, x*y) for y in range(1, x+1)]) 很明顯這句是一個將以推導式的形式生成的列表轉換成字符串,以制表符分隔;單獨這一句代碼不能執行,因為x還未賦值,我們可以假設它有一個值,你會發現這一行代碼最終結果是打印99乘法表的每一行。
  2. 然后剩下的代碼則是外層循環,列表推導式,轉換字符串,以換行符分隔,跟第1步一樣(上面外層的join操作對象並沒有再使用[ ]轉成列表,加上也可以)。

最后結果:

1 1*1=1
2 1*2=2    2*2=4
3 1*3=3    2*3=6    3*3=9
4 1*4=4    2*4=8    3*4=12    4*4=16
5 1*5=5    2*5=10    3*5=15    4*5=20    5*5=25
6 1*6=6    2*6=12    3*6=18    4*6=24    5*6=30    6*6=36
7 1*7=7    2*7=14    3*7=21    4*7=28    5*7=35    6*7=42    7*7=49
8 1*8=8    2*8=16    3*8=24    4*8=32    5*8=40    6*8=48    7*8=56    8*8=64
9 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM