【问题标题】:TypeError: 'int' object is not iterable despite of using range function properlyTypeError:尽管正确使用范围函数,但“int”对象不可迭代
【发布时间】:2019-01-18 18:47:05
【问题描述】:

我正在编写来自 Hackerrank 的代码,代码给出为

def miniMaxSum(arr):
    minsum,maxsum=0
    arr.sort()
    for i in range(4):
        minsum+=arr[i]
    print(minsum)
    for j in range(1,5):
        maxsum+=arr[i]
    print(maxsum)


if __name__ == '__main__':
    arr = list(map(int, input().rstrip().split()))

    miniMaxSum(arr)

我们应该从五个元素中的四个元素中找到最小和和最大和 但它给了我以下错误

Traceback (most recent call last):
  File "solution.py", line 24, in <module>
    miniMaxSum(arr)
  File "solution.py", line 11, in miniMaxSum
    minsum,maxsum=0
TypeError: 'int' object is not iterable

我正在正确使用范围函数,但仍然出现错误。

【问题讨论】:

  • 没有在那里使用范围。试试minsum = maxsum = 0
  • 见上文或minsum, maxsum = 0, 0

标签: python python-3.x


【解决方案1】:

执行minsum, maxsum = 0 会导致此错误。 您必须使用序列(例如列表、元组、字典或范围)。 Python 将对其进行迭代,然后将相应的值赋予变量。当然,左侧和右侧必须具有相同数量的元素。如果只有一个,它必须是一个序列。

正如 cmets 告诉你的,你可以做minsum, maxsum = 0, 0

当然不涉及 Range()。

除此之外,您还可以这样做:

for value in arr[:4]:
    minsum += value
for value in arr[1:]:
    maxsum += value

这比使用范围和索引更好。我建议您遵循 PEP8 建议的函数名称(mini_max_sum 而不是 miniMaxSum : PEP8 function and variable names

函数名称应为小写,必要时用下划线分隔单词以提高可读性。

变量名称遵循与函数名称相同的约定。

mixedCase 仅在已经是 流行风格(例如threading.py),向后保留 兼容性。

【讨论】:

    猜你喜欢
    • 2015-01-26
    • 2020-03-26
    • 2017-09-11
    • 1970-01-01
    • 2023-01-22
    • 2018-02-03
    • 1970-01-01
    • 2018-09-29
    相关资源
    最近更新 更多