问题描述:
使用嵌套循环输出九九乘法表,内层循环与外层循环的关系,输出的数据的个数与行数相同,即第一行输出一个,11=1,第二行输出两个12=2 2*2=4依次类推。
编程:
1.方法一:
for i in range(1,10):
for j in range(1,i+1):
print(str(j)+'*'+str(i)+'='+str(i*j),end='\t')
print()
2.方法二:
for i in range(1, 10): # 外层循环控制行数
for j in range(1, i + 1): # 内层循环控制每行的乘法运算次数
print(f"{i}*{j}={i*j}", end="\t") # 输出乘法表达式和结果,用制表符分隔
print() # 每行结束后换行
3.方法三:
可以使用字符串的format方法或f-string来格式化输出,使输出更加整齐。
# 使用f-string(与方法一类似,但强调格式化)
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{i:2d}*{j:2d}={i*j:2d}", end="\t") # 使用:2d来确保数字占两位
print()
4.方法四:使用列表存储结果再一次性输出
可以先将乘法表的结果存储在列表中,然后再一次性输出。这种方法的好处是可以先对结果进行处理或修改,再输出。
multiplication_table = []
for i in range(1, 10):
row = []
for j in range(1, i + 1):
row.append(f"{i}*{j}={i*j}")
multiplication_table.append("\t".join(row))
for row in multiplication_table:
print(row)
5.方法五:使用numpy库(高级方法)
对于更复杂的数学运算和格式化输出,可以使用numpy这样的科学计算库。虽然对于九九乘法表来说可能有些大材小用,但这是一个很好的练习。
import numpy as np
# 创建一个9x9的数组,元素初始化为0
table = np.zeros((9, 9), dtype=str)
# 填充数组
for i in range(9):
for j in range(9):
if j <= i: # 只填充上三角部分
table[i, j] = f"{i+1}*{j+1}={(i+1)*(j+1)}"
# 设置列宽和对齐方式
np.set_printoptions(edgeitems=9, formatter={'str_kind':lambda x: f"{x:<4}"}, linewidth=100)
# 打印数组
print(table)
# 注意:这种方法输出的格式可能与传统的九九乘法表有所不同,因为numpy数组是二维的,并且默认会打印边框和索引。
# 如果要得到更传统的格式,可能需要进一步处理输出。