0

我在教 Python 的课堂上,并且是任何类型的编码的初学者。我一直遇到这个问题,我在教科书或其他讲义中找不到任何东西来解释我做错了什么。这是一个我遇到问题的练习中的一个例子。任务是编写一个程序,接受用户给出的句子并重新排列单词以获得“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()

但是为什么我尝试运行程序我得到了这个:

输入一个句子并将其翻译成尤达语!

输入你的句子:简跑得很快

Traceback(最近一次调用最后一次):文件“C:\Program Files (x86)\Wing IDE 101 4.0\src\debug\tserver_sandbox.py”,第 14 行,在文件“C:\Program Files (x86)\Wing IDE 101 4.0\src\debug\tserver_sandbox.py",第 5 行,在主文件 "",第 1 行,在?语法错误:简跑得很快:,第 18 行

我认为问题来自我使用错误的整个 eval(input()) 命令。有人可以解释我做错了什么吗?

4

3 回答 3

4

eval运行 Python 代码,例如 eval("1+1") 返回 2,这不是您想要的。这就是您在“简跑得快”上出现语法错误的原因,Python 正在尝试执行Jane ran fast.

删除eval,你会没事的。

于 2012-04-27T06:26:41.117 回答
2

我会用以下内容替换您的输入语句(见注 1):

sentance= input("Enter your sentence: ")

另外,试试这个加入:

' '.join(yoda_words)

(注 1)正如下面@Boud 所指出的,最好在inputPython 3.x 中使用(而不是使用 Python 2.x 的 raw_input)(例如参见Python3.x 中 raw_input() 和 input() 之间的区别是什么? )

我目前无法访问 Python 3.x - 真的应该安装它。

于 2012-04-27T06:27:32.773 回答
2

评估是不必要的。删除它,一切都应该正常工作。剩下的就是修正“句子”的拼写:-)

于 2012-04-27T06:29:03.803 回答