0

小さなプロジェクトのために、Pythonで基本的な回文チェッカーを作成しています。私は周りを検索しましたが、これに対する答えは見つかりませんでした。

スクリプトの終わり近くで次のコードを使用しています。

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

このコードを実行すると、構文エラーが発生します。String1はユーザーが入力したテキストで、String2は私が以前に開発した逆のテキストです。Python3.2.3を実行しています

前もって感謝します

回文チェックにString2==String1 [::-1]を使用していますが、受け取るエラーはSyntaxError:無効な構文です。

編集:これは私の正確なコードですが、他にどこに置くべきか正確にはわかりません:新しい行と以前の行の両方で何度も試しましたが成功しませんでした。この場合の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後にコマンドをインデントしませんでした。句がすぐに終了したため、elseを指定しても意味がありません(構文エラー)ififインデントはPythonの構文です。次のように表示する必要があります。

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

間隔は必須です。

于 2012-05-08T19:21:46.750 に答える
2

あなたの基本的な問題は、対話型プロンプトでこれらすべてを実行しようとしているということです。それは可能ですが、Python がすべてのステートメントを同じブロックの一部として解釈するように、特に注意を払う必要があります。ここでは空行が重要です。の前に空白行を入れているためelse:、Python は、あなたが を終了し、ブロックの先頭でif:使用しようとしていると判断しelse:、これは実際には構文エラーです。

したがって、ロープを理解するまでは、コードをファイルに入れてそこから実行するだけで、はるかに簡単になります。これは IDLE ([ファイル] > [新規]、[F5] を押してコードを実行) で行うか、任意のテキスト エディターを使用してコマンド ウィンドウからコードを実行することができます。

于 2012-05-08T19:38:36.467 に答える
2
print(["No", "Yes"][string1 == string1[::-1]])
于 2012-05-08T19:27:27.907 に答える
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'

これは、1 つの概念 (2 つの可能な回答から選択する) を 1 行にカプセル化したものです。

于 2012-05-08T21:03:32.480 に答える