You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python乘法表代码疑问:为何第一种写法无法生成完整九九乘法表?

全局定义num_second导致乘法表不完整的原因

先看两段核心代码:

第一段(仅输出1×1到1×9)

num_second = 1  # 全局作用域定义
for num_first in range(1, 10):
    while num_second <= 9:
        print(f"{num_first}×{num_second}={num_first * num_second}", end="\t")
        num_second += 1
    print()

第二段(正常生成完整乘法表)

for num_first in range(1, 10):
    num_second = 1  # 外层循环的局部作用域定义
    while num_second <= num_first:
        print(f"{num_first}×{num_second}={num_first * num_second}", end="\t")
        num_second += 1
    print()

问题本质

全局变量num_second的值在程序运行期间是持久化的,不会自动重置:

  1. 第一次执行外层循环(num_first=1)时,内层循环从num_second=1开始,一直递增到10(当num_second=9时执行最后一次打印,随后num_second +=1变为10,不满足<=9的条件,内层循环退出)。
  2. 进入第二次到第九次外层循环时,num_second已经是10,内层循环的条件num_second <=9永远不成立,因此不会执行任何打印操作,只会输出换行。
  3. 最终就只会看到第一次循环生成的1×1到1×9的内容。

而把num_second=1放到外层循环内部后,每次外层循环迭代(也就是每一行的开头),都会把num_second重新重置为1,这样内层循环就能从1开始,对应每个num_first生成完整的行内容。

内容的提问来源于stack exchange,提问作者gkr gb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:32:02