問題描述:
打印乘法表如圖:
1*1=1
2*1=2 ? 2*2=4
3*1=3 ? 3*2=6 ? ? ?3*3=9
4*1=4 ? 4*2=8 ? ? ?4*3=12 ? ?4*4=16
5*1=5 ? 5*2=10 ? ?5*3=15 ? ?5*4=20 ? ? 5*5=25
6*1=6 ? 6*2=12 ? ?6*3=18 ? ?6*4=24 ? ? 6*5=30 ? ?6*6=36
7*1=7 ? 7*2=14 ? ?7*3=21 ? ?7*4=28 ? ? 7*5=35 ? ?7*6=42 ? ?7*7=49
8*1=8 ? 8*2=16 ? ?8*3=24 ? ?8*4=32 ? ? 8*5=40 ? ?8*6=48 ? ?8*7=56 ? ?8*8=64
9*1=9 ? 9*2=18 ? ?9*3=27 ? ?9*4=36 ? ? 9*5=45 ? ?9*6=54 ? ?9*7=63 ? ?9*8=72 ? ?9*9=81
我的思路:
第一次循環范圍為range(1,10),因為每次都是從i開始,直到i*i結束,所以第二次循環范圍為range(1,i+i),然后格式化輸出結果,此時還沒有達到乘法表的結果而是一行輸出,只需再判斷一下第一個數是否等于第二個數,如果等于,就說明此行已結束,換行即可;
我的代碼:
for?i?in?range(1,10):for?j?in?range(1,i+1):print?"%d*%d=%d???"?%?(i,j,i*j),if?i==j:print?"\n"
效果圖:
1*1=1 ? ?
2*1=2 ? ?2*2=4 ? ?
3*1=3 ? ?3*2=6 ? ?3*3=9 ? ?
4*1=4 ? ?4*2=8 ? ?4*3=12 ? ?4*4=16 ? ?
5*1=5 ? ?5*2=10 ? ?5*3=15 ? ?5*4=20 ? ?5*5=25 ? ?
6*1=6 ? ?6*2=12 ? ?6*3=18 ? ?6*4=24 ? ?6*5=30 ? ?6*6=36 ? ?
7*1=7 ? ?7*2=14 ? ?7*3=21 ? ?7*4=28 ? ?7*5=35 ? ?7*6=42 ? ?7*7=49 ? ?
8*1=8 ? ?8*2=16 ? ?8*3=24 ? ?8*4=32 ? ?8*5=40 ? ?8*6=48 ? ?8*7=56 ? ?8*8=64 ? ?
9*1=9 ? ?9*2=18 ? ?9*3=27 ? ?9*4=36 ? ?9*5=45 ? ?9*6=54 ? ?9*7=63 ? ?9*8=72 ? ?9*9=81?
示例代碼:
def?fun():for?line?in?xrange(1,10):for?row?in?xrange(1,line?+?1):s=str(line)?+?'?*?'?+?str(row)?+?'?=?'?+?str(line?*?row)print?s.ljust(12),'|',print?''fun()
效果圖:
>>>?
1 * 1 = 1 ? ?| 2 * 2 = 4 ? ?| 3 * 3 = 9 ? ?| 4 * 4 = 16 ? | 5 * 5 = 25 ? | 6 * 6 = 36 ? | 7 * 7 = 49 ? | 8 * 8 = 64 ? | 9 * 9 = 81 ? |?
>>>?
?示例代碼有問題,是錯誤的;
題目出處:http://www.cheemoedu.com/exercise/2
轉載于:https://blog.51cto.com/jmbzs/1782872