以艰难的方式学习Python - EX 41 - 无效的语法

时间:2018-03-14 18:14:01

标签: python syntax-error

我一直在ex41.py或oop_test.py上收到SyntaxError消息,而且我已经完成了整个脚本,一切都和书中的一模一样,但我一直都是这样 - 变量{answer}似乎是只在try:部分中定义,所以我不知道为什么我得到这个SyntaxError。

***:hardway ***$ python ex41.py english File "ex41.py", line 76 print(f"ANSWER: {answer}\n\n") ^ SyntaxError: invalid syntax

这是try:部分,变量位于:

try:
    while True:
        snippets = list(PHRASES.keys())
        random.shuffle(snippets)

        for snippet in snippets:
            phrase = PHRASES[snippet]
            question, answer = convert(snippet, phrase)
            if PHRASE_FIRST:
                question, answer = answer, question

            print(question)

            input("> ")
            print(f"ANSWER: {answer}\n\n")

except EOFError:
    print("\nBye") `

可以在此处找到完整的代码:Learning Python The hard way Ex. 41 - Learning to Speak Object-Oriented

1 个答案:

答案 0 :(得分:0)

您的代码看起来很好。问题是您正在运行的Python版本。

正如上面的评论中所提到的,首先在Python 3.6中引入了字符串(参见official documentation)。如果要使用此功能,则需要更新到Python 3.6。

如果您没有(或不能)切换版本,则可以使用format()代替:

  print("ANSWER: {}\n\n".format(answer))

或者使用旧样式%s(格式化字符串)运算符:

  print("ANSWER: %s\n\n" %answer)

请参阅:What does %s mean in Python?

我建议format()使用第二种方法。

如果您要在Python 3.6之前制作将在Python版本上运行的代码,那么最好使用上面列出的替代方案。