[自学python] 关于D or N的问题

查看:101
本文介绍了[自学python] 关于D or N的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

代码如下:

def is_friend(name):
    return name[0] == ('D' or 'N')

# 1
print is_friend('Diane')

# 2
print is_friend('Ned')

# 3
print is_friend('Moe')

执行结果是:
True
False
False
我想问的是第二个print is_friend('Ned')
这个结果为什么是False呢
我明明写的是 D or N 如果等于的花
应该是True啊

解决方案

这个是因为Python orand运算中的短路计算。

  • 在计算a and b时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b;
  • 在计算a or b时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。

再看你的表达式'D' or 'N',D是True,所以这个表达式的结果是D,所以Ned那个是False的。

如果想实现D或N的匹配,可以使用name[0] in ('D', 'N')

这篇关于[自学python] 关于D or N的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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