Python中!=运算符与if not ... in条件判断的用法差异是什么
两种条件判断的核心逻辑差异及问题原因
第一种判断
if letter != punctuation的逻辑:
这是将循环取出的单个长度为1的字符,与整个长度为5的punctuation字符串做完全相等比较。只有当两个变量的类型、内容、长度完全一致时才会返回False。但你的循环中每次取出的letter永远是单个字符,不可能和长度为5的punctuation字符串相等,所以这个判断永远返回True。
所有字符(包括空格、标点)都会进入偏移计算分支:空格、标点在alphabet中查找不到时find()方法会返回-1,计算后得到的结果就是你输出里的j,这就是错误结果里所有空格都变成j的原因。第二种判断
if not letter in punctuation的逻辑:
这是判断单个字符是否属于punctuation字符串的子元素,只有当字符不在标点、空格集合里时才返回True走偏移分支,标点、空格会直接进入else分支保留原值,因此解密结果正确。
内容的提问来源于stack exchange,提问作者EvaIgoria
相关产品推荐
相关产品推荐

