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

Python分数化简函数返回值不生效,调用后原变量值未更新如何解决?

问题根因
  • Python中整数属于不可变类型,函数内的形参n、d是独立的局部变量,对这两个变量的重新赋值只会在函数局部作用域生效,不会修改外部全局变量a、b的取值。
  • 你调用simp(12,36)时没有接收函数返回值,函数计算得到的化简结果没有被赋值给外部变量,相当于计算结果被直接丢弃了。

注:原函数还存在隐藏逻辑问题:循环判断条件误用了固定的limit变量,应替换为循环变量dividend,同时使用整数除法建议用//避免返回浮点数结果,下述修正方案中已经同步优化了这两处问题。

修复方案

只需在调用函数时接收返回值并赋值给原有变量即可,修正后代码如下:

def simp(n, d):
  # 取两数中更小值作为遍历上限
  limit = min(n,d)
  # 从大到小遍历找最大公约数
  for dividend in range(limit, 2, -1):
    if (n % dividend == 0) and (d % dividend == 0):
      n = n // dividend
      d = d // dividend
  # 返回化简后的分子分母
  return (n, d)

a = 12
b = 36
print(a, "/", b,)
print("should be simplified down to")
# 接收返回值赋值给外部变量
a, b = simp(a, b)
print(a, "/", b)

运行后输出为:

12 / 36
should be simplified down to
1 / 3

内容的提问来源于stack exchange,提问作者Nam Khanh Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:36:03