“像计算机科学家一样思考: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 = True
为found = True
。
条件设置为not found
,因此循环将迭代。 (我将条件设置为found
,并且它不会迭代。因此,while循环必须仅针对True
值进行迭代)。在achar
中找到astring
后,found = True
。闭环背后的逻辑是什么?我对使用not
的误解在哪里?
答案 0 :(得分:2)
我认为您应该将Not运算符视为逆变器。逻辑表将是:
因此,当“发现”为False时,它实际上为True,而当为True时,它为False。
while循环的条件语句与while True一样工作-执行代码,而false退出代码。
看条件,它是and操作,两个操作都必须为True才能为True,如果您查找and Gate真值表,则可以了解更多信息。
基本上,“ ix 希望这会有所帮助