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'
答案 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]