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。
这是逻辑: (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 = 23,y = 5
第二次迭代:x = 2,y = 53
第三次迭代:x = 0,y = 532
| 归档时间: |
|
| 查看次数: |
1438 次 |
| 最近记录: |