首页 > 解决方案 > ValueError:int() 以 10 为底的无效文字:'[2,7,11,15]'

问题描述

当我在我的电脑上运行这段代码时,它没问题,但是当我在 leetcode 上提交它时,它提供的运行时间更像上面。错误 :

ValueError: invalid literal for int() with base 10: '[2,7,11,15]'
    if (int(arr[i])+int(arr[j]))==target and int(arr[i])!=int(arr[j]) and cnt<1:
Line 11 in <module> (Solution.py)

我应该解决这个问题吗?

arr=[]

arr=input()
arr=arr.split()

target=int(input())
cnt=0
for i,num in enumerate(arr):
    for j,num1 in enumerate(arr):

        if (int(arr[i])+int(arr[j]))==target and int(arr[i])!=int(arr[j]) and cnt<1:
            li=[]

            li.append(i)
            li.append(j)
            li=sorted(li)
            print(li)
            cnt=cnt+1;

标签: pythonruntime-error

解决方案


此错误表明转换失败,可能是在您尝试转换arr[...]为整数时。

正如您在错误中看到的那样,您尝试转换[2,7,11,15]为立即失败的 int。您的逻辑可能是错误的arr.split:您假设输入将用空格(aka 2 7 11 15)给出,而用逗号分隔([2, 7, 11, 15])。

对于该确切输入,您应该使用arr=arr.split(',')并删除字符串开头和结尾的 '[' 和 ']'。您可以通过仅获取arr.

固定线路:arr = arr[1:-1].split(',').

这应该涵盖导致问题的特定输入。话虽如此,我不确定它是否会涵盖所有情况,因为您没有给出完整的任务。这取决于您如何假设输入将被给出。


推荐阅读