0

我正在为一个小项目在 python 中制作一个基本的回文检查器。我四处寻找,没有找到答案。

我在脚本末尾附近使用以下代码:

if String1 == String2:
               print("Yes")
else:
               print("No")

运行此代码时收到语法错误。String1 是用户输入的文本,String2 是我之前开发的反向文本。我正在运行 Python 3.2.3

提前致谢

我正在使用 String2 == String1[::-1] 进行回文检查,我收到的错误是 SyntaxError: invalid syntax

编辑:这是我的确切代码,但是我不确定在哪里放置其他内容:我在新行和之前的行上都尝试过多次,但没有成功。在这种情况下,String1 是“racecar”

Python 3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import easygui as eg
>>> String1 = eg.enterbox(msg="Enter a Word")
>>> String2 = String1[::-1]
>>> if String1 == String2:
    print("Yes")


Yes
>>> else:

SyntaxError: invalid syntax
>>> 
4

5 回答 5

4

[::-1]用于检查回文应该像一个魅力:

>>> s1 = "This is a string."
>>> s2 = "racecar"
>>> s1 == s1[::-1]
False
>>> s2 == s2[::-1]
True

你的代码中有一些东西你没有向我们展示。您需要粘贴更大的代码片段,或者您收到的实际回溯。

而且,现在要说明您粘贴的回溯 - 您没有在语句print之后缩进命令。if因为if子句立即结束,所以提供 else 是没有意义的(语法错误)。缩进是 Python 中的语法。你需要它看起来像这样:

if String1 == String1[::-1]:
  print("Yes")
else:
  print("No")

间距是强制性的。

于 2012-05-08T19:21:46.750 回答
2
print(["No", "Yes"][string1 == string1[::-1]])
于 2012-05-08T19:27:27.907 回答
2

您的基本问题是您试图在交互式提示下执行所有这些操作。你可以这样做,但你需要特别注意确保 Python 将所有语句解释为同一块的一部分。空行在这里很重要;因为你在前面放了一个空行else:,Python 认为你已经结束了你的if:并且你试图else:在一个块的开头使用,这确实是一个语法错误。

因此,在您了解其中的原理之前,如果您只是将代码放在一个文件中并从那里运行它,将会简单得多。您可以使用 IDLE(文件 > 新建,然后按 F5 来运行您的代码)来执行此操作,或者您可以使用任何文本编辑器并从命令窗口运行您的代码。

于 2012-05-08T19:38:36.467 回答
0

线后

if String1 == String2:
    print("Yes")

按 Enter ,然后按 Backspace,然后写:

else:

按 Enter agian,然后写:

print("no")
于 2012-05-08T19:39:36.500 回答
0

您已经接受了答案,但我会这样写:

print 'Yes' if String1 == String2 else 'No'

它将单个概念(在两个可能的答案之间进行选择)封装到一行中。

于 2012-05-08T21:03:32.480 回答