python的一段字符串逻辑判断的小程序一直调不对

查看:123
本文介绍了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语句为真,看了好久都没弄明白,不知道两段程序的区别在什么地方。求大侠指点!

解决方案

  • 对于字符串ss[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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆