0

I am in a class teaching python and am a beginner at any sort of coding. I keep running into this problem and I can't find anything in my text book or additional handouts explaining what I'm doing wrong. Here is an example taken from one of the exercises that I am having trouble with. The task is to write a program that takes a sentence given by the user and rearrange the words to get "yoda speak". This is what I have.

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

However why I try to run the program I get this:

Enter a sentence and have it translated into Yoda speak!

Enter your sentence: Jane ran fast

Traceback (most recent call last): 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", line 5, in main File "", line 1, in ? Syntax Error: Jane ran fast: , line 18

I think the problem comes from me using the whole eval(input()) command wrong. Could someone please explain what I am doing wrong?

okm
  • 23,575
  • 5
  • 83
  • 90
Jyzavi
  • 11
  • 3

3 Answers3

4

eval runs Python code, e.g. eval("1+1") returns 2, this is not what you want. This is the reason you get the syntax error on "Jane ran fast", Python is trying to execute Jane ran fast.

Remove the eval and you'll be fine.

Edvard Pedersen
  • 723
  • 3
  • 12
2

I would replace your input statement with the following (see note 1):

sentance= input("Enter your sentence: ")

Also, try this for your join:

' '.join(yoda_words)

(note 1) As pointed out by @Boud below, better to use input (instead of raw_input with Python 2.x) with Python 3.x (see for example What's the difference between raw_input() and input() in python3.x?)

I currently don't have access to Python 3.x - really should install it.

Community
  • 1
  • 1
Levon
  • 138,105
  • 33
  • 200
  • 191
2

The eval is unnecessary. Remove it and all should work fine. That just leaves fixing the spelling of "sentance" :-)

Raymond Hettinger
  • 216,523
  • 63
  • 388
  • 485