python中的否定支持

python中的否定支持,python,syntax,Python,Syntax,我正在阅读一个简单的基于角色的游戏,其中包含以下代码: # Prompt user to buy some equipment. purchase = raw_input('Would you like to buy some equipment? ') while purchase ! ='done': 现在当我在购买时更改行时!='done’to be while purchase=未按照我在这里读到的许多线程中的建议完成,我得到一个错误: File "game.py", line 143

我正在阅读一个简单的基于角色的游戏,其中包含以下代码:

# Prompt user to buy some equipment.
purchase = raw_input('Would you like to buy some equipment? ')
while purchase ! ='done':
现在当我在购买时更改行时!='done’to be while purchase=未按照我在这里读到的许多线程中的建议完成,我得到一个错误:

File "game.py", line 143
    while purchase = not 'done':
                   ^
SyntaxError: invalid syntax
这确实让我对python语法在处理否定方面感到困惑,应该使用哪一种呢!或者不,以及应该如何使用它。

您应该这样做

while purchase != 'done':
另请注意,将其更改为

while purchase = 'done':
无法工作,因为=是一个赋值,您需要改为==。通过说while purchase==未“完成”您的请求:

while purchase == False

这不是你的意思。

首先,单个等于字符仅用于赋值。并且不能在while条件表达式中执行赋值。要进行比较,需要使用两个相等字符:

while purchase == not 'done':
现在,not是一个布尔运算符,用于反转以下表达式。因此,在您的情况下,将评估“未完成”。运算符强制执行布尔值,由于“done”为true,因此会导致False:

>>> not 'done'
False
所以,最后,你要做的是:

while purchase == False:
在这里,您可能无法正确使用的方法是将其放在比较的开头,这使其包装整个表达式:

while not purchase == 'done':

然而,这并不像购买时那么清楚!='“完成”,所以您应该坚持这一点。

=是赋值,使用==代替。另外,not'done'始终为False。请显示多个线程,甚至是建议使用此语法的线程。我认为您正在替换!不要盲目地使用。不相等比较运算符应写为!=不是并被视为一个整体。没有什么是否定的,这只是一个不平等的比较。另一方面,if not purchase:在布尔上下文中是purchase的否定。感谢dopstar,您的解释更有意义,两个运算符之间不应该有空格。not示例中的括号是完全不必要的,而且我的样式非常糟糕。@l4mpi这主要是为了澄清它适用于整个表达式,但我现在试着用语言来表达。