我想使用Python检查回文。 我目前的代码使用循环次数很多的 for
循环。
在我看来,从C语言转到Python时人们犯的最大错误是试图使用C逻辑来实现Python代码,这会使得代码运行缓慢,并且无法充分利用Python语言的特点。
在这个网站上,搜索"C-style for",可以看到Python没有C风格的for循环。 虽然可能已经过时,但我理解为Python有自己的方法。
我尝试了一些查询,但并没有找到最新(Python 3)的关于如何不使用for循环解决回文问题的建议。
在课堂上我已经用C语言完成了这个问题,但我想个人挑战一下用Python解决它。 这个问题来自欧拉计划,顺便说一下,这是一个很棒的网站。
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语言中,我会制作一个for循环,将索引0与索引最大值进行比较,然后将索引0 + 1与max-1进行比较,直到某些条件满足。在Python中如何更好地做到这一点?
我的for循环(在in range(999、100、-1)中),在Python中是否有更好的方法?
是否有任何好的建议、有用的网站或资源适用于我这种情况的人? 我不是程序员,也没有成为程序员的愿望,我只想学习足够的知识,以便在撰写本科论文(电气工程)时,不必同时学习适用的编程语言并尝试获得良好的项目结果。 “从基本的C到优秀的Python应用程序”,这样的东西。
任何使此问题具有极佳解决方案的特定代码也将不胜感激,我需要学习良好的算法... 我正在设想3种情况:如果该值为零或一位数,如果长度为奇数,如果长度为偶数。我打算写for循环...
附:问题是:找到两个三位数的最大乘积,其也是回文数。
isPalindrome
可以更简单。你可能还想将所有找到的回文存储在一个列表中,然后对其进行排序以找到最高值。如果你只是break
,你不能保证得到最高值的回文。 - wflynny.lower()
和.translate()
这样的方法来使情况统一并除去空格和标点符号。 - Crowman