首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查数字是否为回文

检查数字是否为回文
EN

Stack Overflow用户
提问于 2021-09-13 23:02:12
回答 3查看 98关注 0票数 1

通过传递用户输入作为函数调用参数并使用除法。即使我的逻辑是正确的,我也不明白我在哪里出错。

代码语言:javascript
复制
class Solution:

    def isPalindrome(self, x: int) -> bool:

        x = int(input("Enter The number"))
        rev = 0
        while x > 0:
            temp = x % 10
            rev = (rev * 10 + temp)
            x = x // 10
        #print(rev)

        if x == rev:
            return True
        else:
            return False


    sol = Solution()
    a = sol.isPalindrome(x)
    print(a)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-09-13 23:39:25

有几种方法可以改进代码以使其正常工作,还可以使格式化更加简洁:

要修复代码,需要确保没有编辑x的值,而是编辑具有相同值的另一个变量的值,以便在最后的比较中将其与实际值进行比较:

班级解决方案:

代码语言:javascript
复制
def isPalindrome(self, x: int) -> bool:

    x = int(input("Enter The number"))
    placehold = x
    rev = 0
    while placehold > 0:
        temp = placehold % 10
        rev = (rev * 10 + temp)
        placehold = placehold // 10
    #print(rev)

    if x == rev:
        return True
    else:
        return False


sol = Solution()
a = sol.isPalindrome(x)
print(a)

其次,这里没有真正的理由需要使用类。使用该函数本身也同样有效:

代码语言:javascript
复制
def isPalindrome():

    x = int(input("Enter The number"))
    placehold = x
    rev = 0
    while placehold > 0:
        temp = placehold % 10
        rev = (rev * 10 + temp)
        placehold = placehold // 10
    #print(rev)

    if x == rev:
        return True
    else:
        return False

print(isPalindrome())
票数 0
EN

Stack Overflow用户

发布于 2021-09-13 23:08:28

在每次迭代中覆盖x,因此到循环结束时,它将不等于rev。在开始计算之前,你需要保存is。例如:

代码语言:javascript
复制
x = int(input("Enter The number"))
temp_x = x
rev = 0
while x > 0:
    temp = tepm_x % 10
    rev = (rev * 10 + temp)
    temp_x = temp_x // 10
票数 1
EN

Stack Overflow用户

发布于 2021-09-13 23:32:14

代码的唯一问题是,由于在计算x时更改了rev,所以最后的语句如下:

代码语言:javascript
复制
if x == rev:

将永远是False,除非x=0

相反,只需创建x的副本并将rev与之进行比较:

代码语言:javascript
复制
x = int(input("Enter The number"))
orig = x
rev = 0
while x > 0:
    temp = x % 10
    rev = (rev * 10 + temp)
    x = x // 10

if orig == rev:
    return True
else:
    return False

对于将来,当您尝试调试某些东西时,打印出正在更改的变量(revx)。这将帮助您在将来捕获这样的错误:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69169951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档