Python代码错误

时间:2016-09-13 12:31:03

标签: python

Python中这个程序有什么问题?

我需要取一个整数输入(N) - 因此,我需要创建一个(N)整数数组,也将整数作为输入。最后,我需要打印数组中所有整数的总和。

输入采用以下格式:

5

4 6 8 18 96

这是我写的代码:

N = int(input().split())
i=0
s = 0
V=[]
if N<=100 :
    for i in range (0,N):
        x = int(input().split())
        V.append(x)
        i+=1
        s+=x
print (s)

显示以下错误。

Traceback (most recent call last): 
  File "main.py", line 1, in <module>
N = int(input().split())
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

3 个答案:

答案 0 :(得分:6)

split()返回您尝试转换为整数的列表。 您可能希望将列表中的所有内容转换为整数:

N = [int(i) for i in input().split()]

您还可以使用map

N = list(map(int, input().split()))

答案 1 :(得分:2)

您可以在调用程序时使用sys模块获取输入,使用lambda函数将list中的字符串项转换为整数。您还可以使用内置和函数。这样的事情:

#!/usr/bin/env python

import sys
s = sum(i for i in map(lambda x: int(x), sys.argv[1].split(',')))
print s

示例:

python test.py 1,2,3,4

输出应 10

  

修改您的代码:

现在,如果您想修改代码以执行其打算执行的操作,您可以修改代码:

#!/usr/bin/env python

N = input()
s = 0
V=[]
if N<=100 :
    for i in range (0,N):
        x = input()
        V.append(x)
        s+=x
print (s)

注1 :在使用范围的python中,您不必手动增加循环中的计数器,默认情况下会发生。

注意2 :'input()'函数将保留您将输入的变量的类型,因此如果输入整数,则不必将其转换为整数。 (请注意,input() 不建议使用,因为它在更复杂的项目中可能会有危险。)

注意3 :您无需使用“.split()”作为输入。

答案 2 :(得分:1)

您的代码失败,因为str.split()返回一个列表。 From the Python documentation

  

使用sep作为分隔符,返回字符串中单词的列表   串

如果您输入的是一系列数字作为字符串:

1 2 3 4

你想迭代input.split()返回的列表来对每个整数做一些事情。

in = input()
for num in in.split():
    x.append(int(num))

结果将是:     x = [1,2,3,4]