【问题标题】:Why is my function returning a wrong value?为什么我的函数返回错误的值?
【发布时间】:2021-01-18 10:03:21
【问题描述】:

我最近才开始学习 Python。我无法弄清楚我的函数返回错误值的原因。基本上,我想计算一个列表中偶数的总数。

myModule.py 中的代码

def evenNum(x):
    e_count = 0
    for num in x:
        if num % 2 == 0:
            e_count += 1
            return e_count

main.py 中的代码

import sys
import myModule

inputList = [int(s) for s in sys.argv[1].split(',')]
    
print("no. of even numbers is:%d"%(myModule.evenNum(inputList)))

在cmd中输出

C:\Users\belle\Testing\Exercise1> main.py 14,12,9,21,23,2
 no. of even numbers is:1

结果应该是 3 而不是 1...

【问题讨论】:

  • 您的意思是在for num in x 循环之后返回吗?现在,您在第一次运行e_count += 1 后立即返回。如果是这样,那么您只需将 return 取消缩进两次。
  • @RandomDavis 非常感谢!有用。我不知道“return”的缩进规则。
  • 我可能是错的,但我想不出python中的任何关键字或值都不需要缩进才能执行。

标签: python python-3.x list function pycharm


【解决方案1】:

缩进。以前的版本一旦找到偶数就会返回 1,如果 x 没有,则返回 None

def evenNum(x):
    e_count = 0
    for num in x:
        if num % 2 == 0:
            e_count += 1
    return e_count

【讨论】:

  • 非常感谢!有用。因为我最近才开始学习,所以我不知道“返回”的缩进规则。
  • @BellaSwan 这不是特定于返回的规则,Python 使用缩进来知道接下来要运行哪个语句;如果当前缩进级别有另一个语句,它将在下一个运行。
猜你喜欢
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 2017-04-15
  • 1970-01-01
相关资源
最近更新 更多