一.while循环实现完整代码
# 外层while循环控制行数(1-9行)
i = 1
while i <= 9:
# 内层while循环控制每行列数(列数≤行数,避免重复)
j = 1
while j <= i:
# 格式化输出,制表符\t分隔,排版整齐
print(f"{j}×{i}={j*i}", end="\t")
j += 1 # 列数自增
print() # 每行结束换行
i += 1 # 行数自增
二.代码逐行解析
- 外层while循环(控制行数)
- 初始化 i=1 : i 代表乘法表的行数,从第1行开始;
- 循环条件 i <= 9 :乘法表共9行,行数最大为9,满足条件则继续循环;
- 循环末尾 i += 1 :每行输出完成后,行数自增1,进入下一行(如第1行结束后,i变成2,开始第2行)。
- 内层while循环(控制列数)
- 初始化 j=1 : j 代表每行的列数,从第1列开始;
- 循环条件 j <= i :核心逻辑!确保每行输出的列数等于当前行数(如第5行只输出5列,避免出现“6×5”这类重复且不符合乘法表规则的内容);
- 循环末尾 j += 1 :每列输出完成后,列数自增1,进入下一列(如第3行第1列结束后,j变成2,开始第2列)。
- 输出格式优化
- print(f"{j}×{i}={j*i}", end="\t") :用f-string格式化表达式, end="\t" 表示输出后不换行,用制表符分隔列,让乘法表排版整齐;
- 内层循环结束后的 print() :无内容仅换行,确保每行输出完成后,下一行从新的一行开始。
核心要点总结
- 循环嵌套逻辑:
外层控制行,内层控制列。
while循环需先初始化变量,再写循环条件,最后变量自增; - 去重关键: j <= i 是用于确保每行只输出“列数×行数”(而非行数×列数),符合标准九九乘法表格式;
- 排版技巧:
end="\t" (制表符)让字符对齐,比如说先print(“Loveyou Stella”),再输入print(“hahaha metoo”),打印出来的两行,第二个单词不对齐,但是如果在其中插入制表符就可以让Stella和metoo首字母对齐,请试试看^3^
end=" " (空格)可控制print不换行,我们知道print()会自动换行,使用end=’ '或者end=" "可以让打印出来的句子不换行哦❤
报错原因(自查)
- 报错1:死循环(程序一直运行不结束)
- 原因:循环变量未自增(漏写 i += 1 或 j += 1 ),导致循环条件永远满足,一定一定要写终止条件⚠️;
- 解决:确认外层循环末尾加 i += 1 ,内层循环末尾加 j += 1 ,确保变量逐步接近循环终止条件。
- 报错2:输出内容杂乱(所有表达式挤在一行)
- 原因:漏写内层循环外的 print() (无换行操作);
- 解决:内层while循环结束后,必须加1行空 print() ,实现每行输出后换行。
- 报错3:乘法表格式颠倒(出现“2×1=2”这类不符合规则的内容)
- 原因:把 j 和 i 的顺序写反(如 print(f"{i}×{j}={i*j}",…) );
- 解决:不要随意更改 j×i 的顺序(确保 j 是列数、 i 是行数),符合九九乘法表逻辑。
⚠️新手注意输入法,关键字等一定要是英文输入法下的(我用f去格式化非字符串数据的时候失败了,最后发现是因为我的花括号是中文输入法下的!)
❶双层循环嵌套
❷化成标准格式
结果展示

46万+





