python - 如何使用 Python 逻辑检查回文

标签 python string palindrome

我正在尝试使用 Python 检查回文。我的代码非常 for-循环密集。

在我看来,人们从 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

我在这里遗漏了很多代码。这五个哈希值只是对我自己的提醒。

具体问题:

  1. 在 C 语言中,我会创建一个 for 循环,将索引 0 与索引 max 进行比较,然后将索引 0+1 与 max-1 进行比较,直到某些东西。如何在 Python 中最好地做到这一点?

  2. 我的 for 循环(在 (999, 100, -1) 范围内),这是在 Python 中做的不好的方法吗?

  3. 有没有人对我这个职位的人有什么好的建议、好的网站或资源?我不是程序员,我不渴望成为一名程序员,我只想学足够多的东西,这样当我写我的学士学位论文(电气工程)时,我不必在尝试的同时学习一门适用的编程语言以在项目中取得良好的效果。 “如何从基本的 C 语言到 Python 的优秀应用”,诸如此类。

  4. 任何能很好地解决这个问题的特定代码也将不胜感激,我需要学习好的算法。我设想了 3 种情况。如果该值为零或一位数,如果它是奇数长度,如果它是偶数长度。我本来打算写 for 循环...

PS:问题是:求两个 3 位整数的最高值乘积也是回文。

最佳答案

判断给定值是否为回文的pythonic方法:

str(n) == str(n)[::-1]

解释:

  • 我们正在检查 n 的字符串表示是否等于 n
  • 的反转字符串表示
  • [::-1] 切片负责反转字符串
  • 之后,我们使用 ==
  • 比较相等性

关于python - 如何使用 Python 逻辑检查回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17331290/

相关文章:

Java 正则表达式 : String Formatting

java - 在不转换为字符串的情况下检查 int 是否是回文?

java - 递归方法 : why do I need return statement?

python - 不循环的OpenCV中calcOpticalFlowFarneback的绘制结果

python循环字典值引用更新所有值

r - 如何将一列示例 ID 映射到其各自的文件名

java - 使用 args 的回文;帮我找出错误?

python - 带有换行符的文本文件到数据框 pandas 中

python - Pandas 应用功能并更新数据框的副本

javascript - 在javascript中用正则表达式匹配一个字符串