我正在尝试用Python检查回文。我的代码是非常密集的for-loop。
在我看来,当人们从C语言转向Python时,最大的错误是试图使用Python实现C逻辑,这会使程序运行缓慢,而且没有充分利用这门语言。
我在this网站上看到了。搜索"C-style for",即Python没有C-style for循环。可能已经过时了,但我将其解释为Python有自己的方法。
我试着四处看看,我找不到太多关于这方面的最新(Python 3)建议。如何在不使用for循环的情况下,在Python中解决回文挑战?
我已经在课堂上用C语言完成了这项工作,但我个人想用Python来完成这项工作。问题来自Euler Project,顺便说一句,这是一个很棒的网站。
def isPalindrome(n):
    lst = [int(n) for n in str(n)]
    l=len(lst)
    if l==0 || l==1:
        return True
    elif len(lst)%2==0:
        for k in range (l)
        #####
    else:
        while (k<=((l-1)/2)):
            if (list[]):
                #####   
for i in range (999, 100, -1):
    for j in range (999,100, -1):
        if isPalindrome(i*j):
            print(i*j)
            break我这里遗漏了很多代码。这五个散列只是对我自己的提醒。
具体问题:
在C中,我会做一个循环,比较索引0和索引max,然后用max-1来索引0+1,直到有什么东西。如何在Python语言中最好地做到这一点?我的循环(在范围(999,100,-1)中,这是一个糟糕的方式在Python语言中做到这一点吗?
PS:问题是:找到两个3位整数的最高值乘积,也是一个回文。
发布于 2013-06-27 06:08:00
一种确定给定值是否为回文的pythonic方法:
str(n) == str(n)[::-1]解释:
我们正在检查n
n的倒置字符串表示形式。[::-1] 
==比较是否相等
发布于 2013-06-27 06:11:17
对于相当不直观的[::-1]语法,另一种选择是:
>>> test = "abcba"
>>> test == ''.join(reversed(test))
Truereversed函数返回test中字符的相反顺序。
''.join()再次将这些字符连接在一起,中间没有任何东西。
发布于 2016-06-13 13:23:42
为了记录,对于那些寻找更多算法方法来验证给定字符串是否为回文的人来说,有两种方法可以实现相同的目的(使用while和for循环):
def is_palindrome(word):
    letters = list(word)    
    is_palindrome = True
    i = 0
    while len(letters) > 0 and is_palindrome:       
        if letters[0] != letters[(len(letters) - 1)]:
            is_palindrome = False
        else:
            letters.pop(0)
            if len(letters) > 0:
                letters.pop((len(letters) - 1))
    return is_palindromeAnd....the第二个:
def is_palindrome(word):
    letters = list(word)
    is_palindrome = True
    for letter in letters:
        if letter == letters[-1]:
            letters.pop(-1)
        else:
            is_palindrome = False
            break
    return is_palindromehttps://stackoverflow.com/questions/17331290
复制相似问题