我一直在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
答案 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版本上运行的代码,那么最好使用上面列出的替代方案。