当前位置: 首页 > 知识库问答 >
问题:

LeetCode Reverse Integer(ValueError:以10为基数的int()的文本无效:“”)

金骞尧
2023-03-14

给定一个有符号的32位整数x,返回其数字颠倒的x。如果反转x导致值超出有符号32位整数范围[-2**31, 2**31 - 1],则返回0。

假设环境不允许存储64位整数(有符号或无符号)。

这是我的意见书

class Solution(object):
def reverse(self, x):
    sp= str(abs(x))[::-1].lstrip("0")
    ans= int(sp)
    
    if x > 0 :
        return ans
    else: 
        return -1*ans

int()方法应该允许我传递一个字符串值(“12”),但是它返回一个错误,说它是int()的无效文本。

第3行中的变量sp是str而不是float,所以我不知道为什么它不在leetcode提交页面上运行,因为它在VSCode上运行正常。

有没有我错过的评分标准?

这就是我得到的值误差

共有2个答案

王高超
2023-03-14

错误表示您尝试int()一个无字符串或字母非数字,所以在int()之前检查变量sp

试试这个

class Solution(object):
def reverse(self, x):
    sp= str(abs(x))[::-1].lstrip("0")
    if not sp:
        return 0
    ans= int(sp)
    
    if x > 0 :
        return ans
    else: 
        return -1*ans
诸腾
2023-03-14

原始代码有两个问题:(1)它不能处理零,(2)问题描述中的范围检查丢失。

对于零,字符串表示为“0”。但是在调用lstrip(“0”)之后,它将是空字符串,int将不接受该字符串。这可以通过对零进行特殊情况检查来解决。一个更简单的解决方案(Mark建议)是不去掉前导零。

对于范围检查,如果值超出范围,只需添加一个检查以返回零。

这是一个更新版本,两个修补程序都已就位。请注意,此版本省略了条带("0")调用,它修复了零大小写:

class Solution(object):
    def reverse(self, x):
        sp = str(abs(x))[::-1]
        ans = int(sp)

        if x < 0:
            ans = -ans

        if ans < -2**31 or ans > 2**31 - 1:
            return 0

        return ans

这将正确处理所有测试用例。

 类似资料:
  • 问题内容: 我正在创建一个读取文件的程序,如果文件的第一行不为空白,它将读取接下来的四行。在这些行上执行计算,然后读取下一行。如果该行不为空,则继续。但是,我收到此错误: 它正在读取第一行,但无法将其转换为整数。 我该怎么做才能解决此问题? 代码: 问题答案: 仅作记录: 我在这里…

  • 我正在使用创建通知。根据我的文件: 在我的< code>urls.py中。我通过在我的视图中使用它来生成测试通知。py: 我可以轻松获取此url中的未读通知数量: 它返回,如我所愿。但是使用我无法获取通知列表,我收到此错误: 作为我使用任何帮助将不胜感激。 完全回溯 环境: 请求方法:GET请求URL:http://127.0.0.1:8000/inbox/notifications/api/un

  • 我在一个EC2实例上测试了一个python脚本,它在服务器上工作得非常好,但是当我试图从Jenkins工作中传递相同的参数时,如下所示。我得到错误消息: 安全组在vpc VPC-D79691B9中创建了sg-ca09bcae。Traceback(最近的调用为last):文件“./create_sg.py”,第32行,在'fromport':int(From_port_1.stripe("“))中,

  • Django总是在向服务器发送的每个POST请求上抛出<code>ValueError</code>。从浏览表单和SE来看,这似乎是我的Django模型的一个问题。但是,我不确定为什么模型会抛出这个错误,或者为什么Django会调用它们,因为这是在POST事件中抛出的。 有问题的视图: 我的应用程序模型: 追溯: 任何帮助或想法都将不胜感激,这真的让我摸不着头脑。

  • 问题内容: 每次尝试编码时,它都有效,但是当我键入代码时,出现错误: ValueError:int()以10为基的无效文字:“停止” 问题答案: 传递给的字符串应仅包含数字: 一个快速的解决方法是在此处使用异常处理: 而且您可以使用匹配“ stop”的任何大小写组合:

  • 问题内容: 我编写了一个程序来求解,然后将其投影在图形上。问题是,每当出现错误时: ValueError:int()以10为底的无效文字。 有什么建议? 这是回溯: 每当我输入一个小于1但大于0的数字时,就会出现问题。在此示例中为0.3。 这是我的代码: 问题答案: 您的回溯告诉您采用整数,您试图给出一个十进制数,因此您需要使用: 这应该按预期工作: 计算机以各种不同的方式存储数字。Python有