退出python解释器的函数_Python函数返回正确的结果,但解释器返回strang

这篇博客讨论了一个编程问题,涉及digit_sum函数,该函数应接受一个数字并返回其数字之和。原始代码存在未定义变量和类型错误。解决方案包括将变量移到函数内部并修正参数类型,确保每次调用都重置变量。修复后的函数能够正确处理字符串输入,如digit_sum("434")返回18。博客强调了编程中细节的重要性,并鼓励学习者继续努力。
摘要由CSDN通过智能技术生成

您不了解变量范围或类型。这就是问题所在。(这其实不是什么问题,因为你在学习。)

期望什么

这个问题需要您提供一个接受一个数字并返回一个数字的函数digit_sum。在本例中,它将接受434,并返回{}。也就是说,digit_sum(434)=18。在

你在干什么

从键盘上阅读(raw_input)和打印(print)与问题无关。在

如果我们删除了您的解决方案中的非功能部分,我们将:def digit_sum(n):

for i in lst:

b = int(i)

userNumbers.append(b)

numsum = sum(userNumbers)

return numsum

当我们试图提交此文件时,一些问题变得显而易见:lst未定义。在

userNumbers未定义。在

您需要一个字符串(str),而不是数字(int)

解决问题我们必须将userNumbers和lst的定义移动到

函数digit_sum。如果它们被设置在“顶级”级别,它们就是

每次调用函数时都不会重置,这就是codeadmy的原因

没有得到正确答案。在

他们用来检查你的代码是这样的:

^{pr2}$

它们有许多这样的调用,并且每个后续调用都不会改变

lst或{}的值。

这掩盖了另一个错误:digit_sum函数接受字符串。也就是说,将其调用为digit_sum(434)(Codecademy所做的)将导致错误,因为您实际上希望它被称为digit_sum("434")。在

可能的解决办法

以下功能基于您的,但根据上述建议进行了更改:def digit_sum(n):

lst = list(str(n))

userNumbers = []

for i in lst:

b = int(i)

userNumbers.append(b)

numsum = sum(userNumbers)

return numsum

你会注意到其他东西不见了:我们可以把它重新加进去,但这是不必要的。您可能希望在开发时使用以下方法进行测试:def digit_sum(n):

lst = list(str(n))

userNumbers = []

for i in lst:

b = int(i)

userNumbers.append(b)

numsum = sum(userNumbers)

return numsum

print "digit_sum(%s) = %s" % (434, digit_sum(434))

print "digit_sum(%s) = %s" % (123, digit_sum(123))

print "digit_sum(%s) = %s" % (555, digit_sum(555))

print "digit_sum(%s) = %s" % (18, digit_sum(18))

print "digit_sum(%s) = %s" % (1001, digit_sum(1001))

运行它时,会产生:digit_sum(434) = 11

digit_sum(123) = 6

digit_sum(555) = 15

digit_sum(18) = 9

digit_sum(1001) = 2

好消息是这些结果都是正确的,所以你有了一个好的开始!你会很快学会的一件事是,在编程中,小而乏味的细节有时非常重要。在

一张小纸条

这并不总是容易或明显的。所谓的专家从零开始,既要学习也要犯错。别灰心!有许多完全不同的概念,你必须理解这些概念才能百分之百地知道发生了什么。没有人能一次得到所有的东西。在

我尊重你努力学习和成长,以及你愿意提出问题的事实。这并非易事,但当你试图理解所有这些时,你的大脑可能会有一点灼伤,这就是学习的感觉。拥抱它!问问题!在

祝你学习顺利!在

其他资源如果可以的话,我推荐Zed Shaw的

优质,免费补充您的学习之旅。太棒了!在

我还发现Udacity's Free Online Courses是一个

丰富的资源可以学习很多不同的东西。具体来说,他们的“入门级”CS课程是用Python编写的,值得花时间学习。在

再次祝你好运。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值