Python 为什么回文的输出是正确的,而正则数的输出是不正确的?

Python 为什么回文的输出是正确的,而正则数的输出是不正确的?,python,python-2.7,palindrome,Python,Python 2.7,Palindrome,我在检查一个数字是否是回文。为此,我计算第k个元素等于第(n-k)个元素的次数。如果该数字等于字符串的长度,则它是回文。我确实得到了正确的回文输出,但当数字不是回文时,绝对没有输出(k)。参考代码: T = int(raw_input()) L = [] for i in range(0,T): alpha = int(raw_input()) L.append(alpha) print L for i in range(0,len(L)): L[i] = str(L[

我在检查一个数字是否是回文。为此,我计算第k个元素等于第(n-k)个元素的次数。如果该数字等于字符串的长度,则它是回文。我确实得到了正确的回文输出,但当数字不是回文时,绝对没有输出(k)。参考代码:

T = int(raw_input())
L = []
for i in range(0,T):
    alpha = int(raw_input())
    L.append(alpha)
print L

for i in range(0,len(L)):
    L[i] = str(L[i])
print L

for i in range(0,len(L)):
    k = 0
    while k < len(L[i]) :
        if L[i][k] == L[i][len(L[i])-(k)-1]:
            k = k + 1
    print k
T=int(原始输入()
L=[]
对于范围(0,T)内的i:
alpha=int(原始输入()
L.附加(α)
打印L
对于范围(0,len(L))中的i:
L[i]=str(L[i])
打印L
对于范围(0,len(L))中的i:
k=0
而k
不要使用如此复杂的逻辑。使用简单的pythonic[:-1]反转字符串

In [1]: a = 1234554321

In [2]: def pal(a):
   ...:     if a == a[::-1]:
   ...:         return True
   ...:     else:
   ...:         return False
   ...:

In [3]: pal(str(a))
Out[3]: True

也许你可以试试更简洁的。这个怎么样:

def is_palindrome(n):
    return str(n) == str(n)[::-1]

n = int(raw_input("Enter a number: "))

print(is_palindrome(n))

我给您的建议是,首先学习python的基础知识。此外,看看python3。这太容易了。你的算法还不错,它的实现也没有正确完成。这是你想要做的。(在蟒蛇3中)


你应该听取其他答案关于如何正确解决这个问题的建议

但是,没有人回答您提出的实际问题:为什么回文的输出正确,而常规数字的输出却不正确

看看这个while循环:

k = 0
while k < len(L[i]) :
    if L[i][k] == L[i][len(L[i])-(k)-1]:
        k = k + 1
k=0
而k
如果
L
不是回文,则If语句中的条件计算结果为false,
k
从不递增。因此
k
保持为零,while循环中的条件始终为真


你有一个无限的while循环

您正在为给定字符串创建二维数组类型,但不正确。此外,你的输入方式很差
k = 0
while k < len(L[i]) :
    if L[i][k] == L[i][len(L[i])-(k)-1]:
        k = k + 1