【问题标题】:Explanation of While Loop Using the Logical Operator "not"使用逻辑运算符“not”的 While 循环说明
【发布时间】:2018-08-17 22:06:10
【问题描述】:

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

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

我已经通过 CodeLens 在 not 的所有位置变化和 found 的原始值中运行了这个,但我无法理解 Python 以这种形式处理其条件的方式。请指出我的思路哪里出了问题或者我错过了什么:

如果found = False,那么not found = Truefound = True。 条件设置为not found,因此循环将进行迭代。 (我将条件设置为 found 并且它不会迭代。所以 while 循环只能迭代 True 值)。一旦在astringfound = True 中找到achar。这个闭环背后的逻辑是什么?我对not的使用有什么误解?

【问题讨论】:

  • “如果找到 = False,则未找到 = True 当找到 = True” - 到底是什么?
  • 一旦在astring 中找到achar,您就想停止查找,从而停止循环,不是吗?所以你设置found = True 以结束循环。你问的是这个吗?
  • 致用户:我的逻辑哪里错了?将变量设置为 True 或 False。然后在其上使用 not 运算符。不是在检查条件时使用 not 运算符,但您想要相反吗?
  • jwodder,是的,这就是我要问的。但具体来说,我要问found = True 时停止的逻辑是什么,因为对我来说,not found = True,那么条件的变化发生在哪里?我对 not 运算符缺少什么?
  • @Tyler_P:我相信 user2357112 对您写的“如果找到 = False ... 当找到 = True”这一事实作出反应,这是没有意义的。

标签: python python-3.x while-loop logical-operators


【解决方案1】:

我认为您应该将 Not 运算符视为逆变器。逻辑表是:

  • 一个 |不是一个
  • T |飞
  • F | T

因此,当 Found 为 False 时,它​​实际上是 True,而当它为 True 时,它​​是 False。

while 循环的条件语句作为 while True - 执行代码,while false 退出代码。

查看条件,这是一个与运算,其中两个运算都必须为真才能为真,如果您查看与门真值表,您可以了解更多信息。

基本上,'ix

希望对你有帮助

【讨论】:

  • 这正是我们所需要的。感谢 Not 运算符为这个“啊哈”时刻付出一百万。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 2020-04-04
  • 2018-06-11
相关资源
最近更新 更多