python - 对函数 Python 中的数字列表求和
问题描述
我有点卡在我的一个作业问题上。有人能指出为什么我的总和返回 7 而不是 22?
def getEven(list):
even = 0
odd = 0
sum = 0
ratio = 0
for nmbr in list:
if nmbr % 2 == 0:
even+=1
else:
odd+=1
sum += nmbr
ratio = even/odd
return even, odd, sum, ratio
list=[1,2,3,4,5,7]
even, odd, sum, ratio = getEven(list)
dict={'even': even, 'odd':odd, 'sum': sum, 'ratio': ratio}
print(dict)
解决方案
首先,将任何 Python 变量命名为与内置 Python 函数或对象相同的名称并不是一个好主意。它可能会在您的代码中导致各种问题。所以我建议更改您sum
和您的dict
变量的名称。
现在回答你的实际问题。问题是表达式
sum += nmbr
实际上不在您的 for 循环中!小心你的缩进。这是具有正确缩进的代码,您可以看到它将返回 sum 为 22。
def getEven(list):
even = 0
odd = 0
sum = 0
ratio = 0
for nmbr in list:
if nmbr % 2 == 0:
even+=1
else:
odd+=1
sum += nmbr
ratio = even/odd
return even, odd, sum, ratio
list=[1,2,3,4,5,7]
even, odd, sum, ratio = getEven(list)
dict={'even': even, 'odd':odd, 'sum': sum, 'ratio': ratio}
print(dict) # Prints {'even': 2, 'odd': 4, 'sum': 22, 'ratio': 0}
推荐阅读
- python - 如何从Python中通过“stdin”输入的字符串中删除子字符串
- asp.net - 如何在另一个模型的控制器操作中初始化一个模型?
- delphi - 使用 indy UDP 客户端 (delphi) 实现 DTLS
- amazon-web-services - 将文件直接从远程 url 传输到 S3 Bucket
- mysql - 使用 ADODB.Parameter 获取两个日期之间的值
- c# - C# Z 索引窗口窗体
- c++ - 在 C++ 规范中定义的 for 循环头中声明循环索引的行为?
- css - 移动设备上的 CSS 工具提示不会在第二次按下时关闭
- amazon-web-services - AWS SQS FIFO 队列仍然要求消费者是幂等的?
- python - 将华氏度转换为摄氏度不断获得 0 的列表?