Python 使用逻辑运算符“While循环”的说明;不是";

Python 使用逻辑运算符“While循环”的说明;不是";,python,python-3.x,while-loop,logical-operators,Python,Python 3.x,While Loop,Logical Operators,来自“像计算机科学家一样思考:Python”的代码 def find(astring,achar): ix=0 发现=错误 当ix的误解在哪里? 我认为你应该把非操作符看作一个反相器。逻辑表将是: A |不是A T | F F | T 所以,当发现是假的,它实际上是真的,当它是真的,它是假的 while循环的条件语句与while True-execute代码和while false退出代码一样工作 看看条件,这是一个and操作,其中两个操作都必须为True才能为True,如果您查找and门真

来自“像计算机科学家一样思考:Python”的代码

def find(astring,achar):
ix=0
发现=错误
当ix
我已经通过CodeLens在
not
的位置和
found
的原始值的所有变体中运行了这一过程,但我无法理解Python以这种形式处理其条件的方式。请指出我的思路哪里出错或我错过了什么:

如果
found=False
,则当
found=True
notfound=True

条件设置为
未找到
,因此循环将迭代。(我将条件设置为
found
,它不进行迭代。因此while循环必须只对
True
值进行迭代)。一旦在
astring
中找到
achar
found=True
。关闭循环背后的逻辑是什么?我对使用<代码>不是< /代码>的误解在哪里?

我认为你应该把非操作符看作一个反相器。逻辑表将是:

  • A |不是A
  • T | F
  • F | T
所以,当发现是假的,它实际上是真的,当它是真的,它是假的

while循环的条件语句与while True-execute代码和while false退出代码一样工作

看看条件,这是一个and操作,其中两个操作都必须为True才能为True,如果您查找and门真值表,您可以了解更多有关它的信息

基本上,“ix
希望这有帮助

“如果发现=错误,那么当发现=正确时,则未发现=正确”-见鬼?一旦在
astring
中找到
achar
,您希望停止查找,从而停止循环,不是吗?因此,您设置
found=True
以结束循环。这就是你要问的吗?对用户:我的逻辑哪里错了?将变量设置为True或False。然后对其使用not运算符。检查条件时不使用not运算符,但您想要相反的结果吗?jwodder,是的,这就是我要问的。但具体来说,我想问的是,当
found=True
时停止的逻辑是什么,因为对我来说,
notfound=True
,那么条件的变化发生在哪里呢?关于
not
操作符,我遗漏了什么?@Tyler\P:我相信user2357112是对您编写的“if found=False…when found=True”这一事实做出反应的,这毫无意义。这正是我们需要的。非常感谢Not接线员的“啊哈”时刻。
def find(astring, achar):
ix = 0
found = False
while ix < len(astring) and not found:
    if astring[ix] == achar:
        found = True
    else:
        ix = ix + 1
if found:
    return ix
else:
    return -1