我不确定为什么这段代码不起作用。我试图迭代一个单词列表的副本,并用另一个给定的单词替换单词。相反,我得到了无效的语法错误。我现在明白了(通过阅读这里的其他帖子),在迭代时修改列表是不好的做法,因此我使用[:]
创建了一个副本。这是我的代码:
def change(z):
words = z.split()
for i in words[:]:
if 'because' in i:
words.replace(i, 'as')
print(words)
change(input("Line: "))
错误:
Traceback (most recent call last):
File "C:/Users/Jarrod/Desktop/py/NCSS2016Adv/kindleNook.py", line 9, in <module>
change(input("Line: "))
File "<string>", line 1
is as
^
SyntaxError: invalid syntax
我的语法不正确的任何线索都将非常感激。
答案 0 :(得分:-2)
您使用的是Python 2.x还是3.x?如果2.x:
Python 2内置input()
函数将尝试将输入字符串解释为python代码:https://docs.python.org/2/library/functions.html#input
因此,如果您输入自然语言,则显然会引发无效的语法错误。
改为使用raw_input()
。
答案 1 :(得分:-3)
您应该提供一个实际上会产生错误的代码,如评论中的其他人所述。
无论如何,在您的代码中,i
将是一个字符串,而不是一个列表,因为您正在使用循环从split
迭代列表。那么,也许你应该使用if i == 'because'
而不是if 'because' in i
?