写个九九乘法表练手
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
代码:
print('正常左下角写法for思路')
for i in range(1,10): # 把i看做行
j = 1
print("{}*{}={}".format(j, i, i * j), end=' ')
if i == j:
print('')
while i > j:
j+=1
print("{}*{}={}".format(j, i, i * j), end=' ')
if i == j:
print('')
print('=' * 20)
格式不太好看,优化一下:
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
代码:
print('正常左下角写法修改的for思路')
for row in range(1, 10):
for col in range(1, 10):
if col <= row:
print("{:^3d}*{:^3d}={:^3d}".format(col, row, row * col), end=' ')
# {:^3d} 中间对齐 (宽度为3)
print('')
print('=' * 20)
另一个小改动:
# 九九乘法表的左下角写法
print('正常左下角写法学习后修改的for思路')
# 1、把乘法表左上角考虑成(1,1)坐标点,每个乘法表等于row*col
# 2、输出是一行一行输出的,所以每一行输出后要求换行。
# 3、每一行的行号就是列从1到行号的循环。
# 4、对格式进行修正,
for row in range(1, 10):
for col in range(1, row + 1):
print("{}*{}={:<4}".format(col, row, row * col), end=' ')
print('')
print('=' * 20)
print('正常左下角写法的while思路')
row = 1
# 行的初始值为1
while row <= 9:
col = 1
# 列的初始值为1
while col <= row:
print('{}*{}={:<4d}'.format(col, row, row * col),end='')
col += 1
print('')
row += 1
print('=' * 20)
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*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*4=4 2*4=8 3*4=12 4*4=16
1*3=3 2*3=6 3*3=9
1*2=2 2*2=4
1*1=1
代码:
print('九九乘法表的左上角for写法')
for row in range(9,0,-1):
for col in range(1,row+1):
print("{}*{}={:<4}".format(col, row, row * col), end=' ')
print('')
print('=' * 20)
print('正常左上角写法的while思路')
row = 9
while row >=0:
col = 1
n = row
# 被乘数的初始值为row
while col <=n:
print('{}*{}={:<4d}'.format(col, n, n * col),end='')
n -=1
print('')
col += 1
row -=1
print('=' * 20)
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
代码:
print('九九乘法表的右下角for写法')
for row in range(1, 10):
for n in range(1, 10 - row):
# 先打印对应的空格
# 每一行的空格分别是8,7,6,5,4,3,2,1,0
print(' ' * 9 , end='')
for col in range(1, row + 1):
# 然后再将每行的乘法表正常输出
print("{}*{}={:<4}".format(row, col, row * col), end=' ')
print('')
print('=' * 20)
print('正常右下角写法的while思路')
row = 1
# 行的初始值为1
# 列的初始值为1
while row <= 9:
n = 9-row
while n > 0:
print(' ' * 9, end='')
n -= 1
col = row
while col >0:
print('{}*{}={:<5}'.format(col, row, row * col), end='')
col -= 1
print('')
row += 1
print('=' * 20)
9*9=81 9*8=72 9*7=63 9*6=54 9*5=45 9*4=36 9*3=27 9*2=18 9*1=9
8*8=64 8*7=56 8*6=48 8*5=40 8*4=32 8*3=24 8*2=16 8*1=8
7*7=49 7*6=42 7*5=35 7*4=28 7*3=21 7*2=14 7*1=7
6*6=36 6*5=30 6*4=24 6*3=18 6*2=12 6*1=6
5*5=25 5*4=20 5*3=15 5*2=10 5*1=5
4*4=16 4*3=12 4*2=8 4*1=4
3*3=9 3*2=6 3*1=3
2*2=4 2*1=2
1*1=1
代码:
print('九九乘法表的右上角for写法')
for row in range(9, 0, -1):
for n in range(9, 0, -1):
# 即每一行的需要空位数分别是:0,1,2,3,4,5,6,7,8
# n的取值分别为9,8,7,6,5,4,3,2,1
if n > row:
print(' ' * 9 , end='')
for col in range(row, 0, -1):
# 开始的列的值取决于行的初试数值
print("{}*{}={:<4}".format(row, col, row * col), end=' ')
print('')
print('=' * 20)
print('正常右上角写法的while思路')
row = 9
while row >= 1:
col = row
n = 0
while n < 9 - row:
print(' ' * 9, end='')
n += 1
while col >=1:
print('{}*{}={:<5d}'.format(row, col, row * col),end='')
col -= 1
print('')
row -= 1