python的一段字符串逻辑判断的小程序一直调不对
本文介绍了python的一段字符串逻辑判断的小程序一直调不对的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
s = 'ab'
t = 'cd'
w = 'abcd'
if w[0] is not (s[0] or t[0]):
print('aaa')
else:
print('sss')
这段程序输出sss
,因为w[0]
等于s[0]
或者t[0]
, if
语句判断为假,进入else
输出sss
而对比于:
s = ' '
t = 'cd'
w = 'cd'
if w[0] is not (s[0] or t[0]):
print('aaa')
else:
print('sss')
这段则输出aaa
,程序判断if
语句为真,看了好久都没弄明白,不知道两段程序的区别在什么地方。求大侠指点!
解决方案
对于字符串
s
,s[0]
表示字符串第一个字节,s[1]
表示第二个字节,依次类推if条件中,因为有括号,所以先运算括号里的值
两个或多个字符(字符串)进行or操作,返回第一个不为空的字符串
参见:https://stackoverflow.com/a/1...,宽泛点说,多个对象进行or返回第一个等价真值的对象
所以if的判断条件,并非你想象的那样
由于这两个例子中,括号里的
s[0]
和t[0]
都非空,所以实际上if条件是if w[0] is not s[0]
因此,第一例是判断
'a' is not 'a'
,第二例是判断'c' is not ' '
这篇关于python的一段字符串逻辑判断的小程序一直调不对的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文