【问题标题】:I tried to do some code to detect if a number is a Palindromic number and I tried 3 examples but how come it only gave me the first one? [duplicate]我试图做一些代码来检测一个数字是否是回文数字,我尝试了 3 个示例,但为什么它只给了我第一个? [复制]
【发布时间】:2018-08-01 03:28:28
【问题描述】:

我写了一些python来检查一个整数是否是回文数

def palindrome_number(num):
    num_str = str(num)
    str_list = list(num_str)
    if str_list[0] == str_list[-1]:
        return True
    return False
palindrome_number(1) # true
palindrome_number(12) # false
palindrome_number(121) # true

但它只给了我true

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    还应该检查 len:

    def palindrome_number(num):
        s = str(num)
        if s[0] == s[-1] and len(s)!=1:
            return True
        return False
    print(palindrome_number(1))
    print(palindrome_number(12))
    print(palindrome_number(121))
    

    输出:

    False
    False
    True
    

    【讨论】:

      【解决方案2】:

      您不仅应该检查第一个和最后一个数字,还应该检查它们之间的其余数字。这是一个使用递归调用检查它们之间数字的实现:

      def palindrome_number(num):
          str_list = str(num)
          if not str_list or len(str_list) == 1:
              return True
          if str_list[0] == str_list[-1]:
              return palindrome_number(str_list[1:-1])
          return False
      

      【讨论】:

        【解决方案3】:

        您必须检查所有数字,而不仅仅是第一个和最后一个。

        Python 有一种使用字符串切片来反转字符串的简单方法。 [::-1] 以相反的顺序返回一个字符串:

        >>> n = 12321
        >>> str(n) == str(n)[::-1]
        True
        >>> n = 12331
        >>> str(n) == str(n)[::-1]
        False
        

        【讨论】:

          猜你喜欢
          • 2023-04-04
          • 2010-10-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-16
          • 2020-09-02
          相关资源
          最近更新 更多