0

私はpythonを教えるクラスにいて、あらゆる種類のコーディングの初心者です。私はこの問題に出くわし続けていますが、教科書や追加の配付資料には、私が間違っていることを説明するものは何も見つかりません。これは、私が問題を抱えている演習の 1 つから取られた例です。このタスクは、ユーザーから与えられた文を受け取り、単語を並べ替えて「yoda speak」を取得するプログラムを作成することです。これは私が持っているものです。

def main():

    print("Enter a sentence and have it translated into Yoda speak!")

    sentence= eval(input("Enter your sentence: "))
    word_list=sentence.split()

    yoda_words= word_list[2:]+word_list[0:2]

    yoda_says= yoda_words.join()

    print("Yoda says: ", yoda_says)

main()

ただし、プログラムを実行しようとすると、次のようになります。

文章を入力して、それを Yoda speak に翻訳してもらいましょう!

あなたの文を入力してください: ジェーンは速く走った

トレースバック (最新の呼び出しが最後): File "C:\Program Files (x86)\Wing IDE 101 4.0\src\debug\tserver_sandbox.py", line 14, in File "C:\Program Files (x86)\Wing IDE 101 4.0\src\debug\tserver_sandbox.py"、5 行目、メイン ファイル ""、1 行目、? 構文エラー: ジェーンは速く走りました: 、18 行目

問題は、 eval(input()) コマンド全体を間違って使用したことが原因だと思います。誰かが私が間違っていることを説明してもらえますか?

4

3 に答える 3

4

evalPython コードを実行します。たとえば、eval("1+1") は 2 を返します。これは望んでいるものではありません。これが、"Jane ran fast" で構文エラーが発生する理由です。Python は実行しようとしていJane ran fastます。

を外せevalば大丈夫です。

于 2012-04-27T06:26:41.117 に答える
2

評価は不要です。それを削除すると、すべて正常に動作するはずです。あとは「文」のスペルを修正するだけです:-)

于 2012-04-27T06:29:03.803 に答える
2

入力ステートメントを次のように置き換えます (注 1 を参照)。

sentance= input("Enter your sentence: ")

また、参加のためにこれを試してください:

' '.join(yoda_words)

(注1)以下の@Boudで指摘されているように、input(Python 2.xのraw_inputの代わりに)Python 3.xで使用することをお勧めします(たとえば、python3.xのraw_input()とinput()の違いは何ですか? )

現在、Python 3.x にアクセスできません。インストールする必要があります。

于 2012-04-27T06:27:32.773 に答える