我正在尝试用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))
True
reversed
函数返回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_palindrome
And....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_palindrome
https://stackoverflow.com/questions/17331290
复制相似问题