检查数字是否为回文而不将其更改为字符串

use*_*466 3 python iteration palindrome

我在解决这个问题时遇到了麻烦,如果一个数字n是回文,则只返回 True 或 False 。

注:哪里有a____表示哪里有需要填写的空格,有2个空格。

def is_palindrome(n):
    x, y = n, 0
    f = lambda: ____
    while x > 0:
        x, y = ____ , f()
    return y == n
Run Code Online (Sandbox Code Playgroud)

我在这上面花了大约一个小时。我发现放入x//10第二个空格将允许函数迭代n. 然后归结为函数f

理想情况下,每次调用它时,它都应该将最后一位数字添加n到一个新数字中y。因此,如果n = 235,while 循环将迭代 3 次,并且每次f()被调用,它应该将5, 3, 和2,添加到 value y

abc*_*ccd 7

这是逻辑: (y * 10) + x % 10

def is_palindrome(n):
    x, y = n, 0
    f = lambda: (y * 10) + x % 10
    while x > 0:
        x, y = x//10 , f()
    return y == n

print(is_palindrome(123454321))
# True
print(is_palindrome(12))
# False
Run Code Online (Sandbox Code Playgroud)

y*10将当前 y 向左移动 1 位,并x%10添加最后一位。

print(is_palindrome(235))
# False
Run Code Online (Sandbox Code Playgroud)

预迭代:x = 235,y = 0

第一次迭代:x = 23y = 5

第二次迭代:x = 2y = 53

第三次迭代:x = 0y = 532