尝试访问最后一个索引时出现索引超出范围错误



我正在做leetcode,我的代码给了我这个我无法理解的错误。 我被要求反转整数,这相当简单。 这些是测试用例:

Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21

我认为我所需要的只是 if 语句来检查输入的条件,所以我这样做了:

class Solution:
def reverse(self, x: int) -> int:
string = str(x)
lst = list(string)
lst.reverse()
if((lst[0]) == '0'):
lst.pop(0)
if((lst[-1] == '-')):
lst.pop(-1)
lst.insert(0, '-')
output = ''.join(lst)
return output

但是这行if((lst[-1] == '-')):抛出了一个IndexError: list index out of range错误。 我所做的只是访问列表的最后一个元素。 我没有尝试访问不存在的索引。

我唯一需要知道的是为什么会发生此错误。 因为这是leetcode,我想自己修复代码。

最终代码

class Solution:
def reverse(self, x: int) -> int:
lst = list(str(x))
lst.reverse()
if(x < 0):
lst.pop(-1)
lst.insert(0, '-')
int_output = int(''.join(lst))
if(int_output < (2**32)):
return int_output
else:
return 0

如果lst为空,就会发生此错误,因为任何索引都将超出范围。

如果x最初是"0",那么lst将被["0"]。然后,第一个if语句将删除"0"元素,因此现在它将[],这是一个空列表,您将收到该错误。

如果你正在做 7.反向整数 您还有其他问题。它说结果应该是一个整数,但你返回的是一个字符串。您也只删除第一个0。如果输入12000则返回"0021"而不是21

相关内容

  • 没有找到相关文章

最新更新