Python 3在函数内计数更新,但值不会在其外部更新

Python 3在函数内计数更新,但值不会在其外部更新,第1张

概述我猜这里有一个范围问题我错过了某个地方.此函数将所有数字平方并将它们相加.如果数字达到1或89,它应该停止,否则继续.这是我的代码: count = 0def chain(x,count): x = str(x) temp = 0 for let in range(0,len(x)): temp = temp + (int(x[let]) ** 2) 我猜这里有一个范围问题我错过了某个地方.此函数将所有数字平方并将它们相加.如果数字达到1或89,它应该停止,否则继续.这是我的代码:

count = 0def chain(x,count):    x = str(x)    temp = 0    for let in range(0,len(x)):        temp = temp + (int(x[let]) ** 2)    x = temp    print("\n")    print(temp)    if x == 89:      count = count + 1      print(count)    elif x == 1:      return False    else:        chain(x,count) chain(145,0)  print(count)

问题是,当我在x == 89时打印计数时,我得到1.但是当我在最后打印计数时,它出现为0.我已经看了看,我似乎没有将它设置为任何东西否则,我也尝试添加返回,返回计数,返回True,似乎没有什么可以解决它.如果有人能够指出我的错误,我将非常感激!

解决方法 解决方案1:
使计数成为一个全局变量

count = 0def chain(x):    global count    x = str(x)    temp = 0    for let in range(0,len(x)):        temp = temp + (int(x[let]) ** 2)    x = temp    print("\n")    print(temp)    if x == 89:      count = count + 1      print(count)    elif x == 1:      return False    else:        chain(x)chain(145)print(count)

解决方案2:
返回计数并在递归调用时接收它.

def chain(x,len(x)):        temp = temp + (int(x[let]) ** 2)    x = temp    print("\n")    print(temp)    if x == 89:      count = count + 1      print(count)    elif x == 1:        pass  # you may want to use -1 or something as flag    else:      count = chain(x,count)    return countprint(chain(145,0))
总结

以上是内存溢出为你收集整理的Python 3在函数内计数更新,但值不会在其外部更新全部内容,希望文章能够帮你解决Python 3在函数内计数更新,但值不会在其外部更新所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1192200.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存