嗨,我刚开始为python启动了一个在线课程,只是为了我,其中一个练习要求我从你输入的列表中添加第一个和列表整数,我想我已经拥有它,但不太确定它一直给我一个错误,
ValueError:具有基数10的int()的无效文字
我的代码是
userList = list(map(int, input().split(',')))
intTotal = userList[1] + userList[len userList]
print (intTotal)
现在,我如何理解, [1] 将是第一个userList值,因为它是列表中的第一个位置,而 [len userList] 应该给我最后的位置,因为它给出了列表的长度作为位置编号。
然后它应该打印变量intTotal
如果你能告诉我哪里出错了,那么这就是王牌!
答案 0 :(得分:2)
您的错误很可能是您的输入类似于1, 2, 3, 4, 5,
当您对此使用split(',')
时,您必须在列表末尾添加一个空白条目,您必须考虑该条目。您可以在列表理解中检查这一点。
要访问列表的最后一个元素,您可以使用arr[len(arr)-1]
,或者使用支持负索引的Python arr[-1]
。
以下是您的代码的工作版本,并进行了上述更改:
userList = [int(x.strip()) for x in input().split(',') if x]
intTotal = userList[0] + userList[-1]
print (intTotal)
示例运行:
>>>1, 2, 3, 4, 5,
6
您可以通过使用isdigit()
来过滤输出错误输入,这样可以让用户输入字母,但它只会添加输入的第一个和最后一个数字,这样可以更加健壮:
userList = [int(x) for x in input().split(',') if x.isdigit()]
示例运行:
>>> 1,2,a,3,4,6,b,4
5