2012-04-27 6 views
0

私はPythonを教える授業に在籍しており、どのような種類のコーディングでも初心者です。私はこの問題を抱え続けています。私はテキストブックや何が間違っているのかを説明する追加の資料で何も見つけることができません。ここでは、私が問題を抱えている演習の1つから取った例を示します。タスクは、ユーザーが指定した文章を取り、単語を並べ替えて「yoda speak」を取得するプログラムを作成することです。これは私が持っているものです。私はプログラムを実行しようとする理由Pythonの入力として文の評価に問題がある

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() 

は、しかし、私はこれを取得:

は、文を入力し、それが話すヨーダに翻訳があります!

は、あなたの文章を入力してください。 ファイル "C:\プログラムファイル(x86の)\ウィングIDE 101 4.0 \ SRC \デバッグ\のtserver_sandbox.py"、ラインジェーンは、高速

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

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

+0

'eval'は何を期待していますか?あなたは何をしようとしているのですか? –

答えて

2

私は(注1を参照)、以下をご入力文を置き換えます:

また
sentance= input("Enter your sentence: ") 

、ご参加のためにこれを試してみてください。

' '.join(yoda_words) 

(注1)@で指摘したようにBoud以下、より良いinput(Python 2.xでのraw_inputの代わりに)Python 3.xでの使用(例えばWhat's the difference between raw_input() and input() in python3.x?を参照)

私は現在Python 3.xにアクセスできません - reallそれをインストールする必要があります。

+1

Python 3の場合、 'input'を使用してください – Boud

+0

@Boudこれを指摘してくれてありがとう..私は本当にPython 3.x – Levon

4

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

evalを削除しても問題ありません。

2

evalは不要です。それを削除し、すべて正常に動作するはずです。それはちょうど "sentance"のスペルを修正します:-)

関連する問題