Python----布尔值中篇之‘and’

# 基础知识

布尔值 and

# 先做题后思考

"Boolean make the code simply"

# 1 接上一篇博文 'or',最后一题

        编写一个名为is_valid_percentage的函数,接受一个数字参数x。如果x在0到100(包括)之间,它应该返回True,否则返回False。你的函数应该只使用or,并通过以下测试:

def assert_equal(actual, expected):
    if actual == expected:
        print("OK")
    else:
        print(f"Error! {repr(actual)} != {repr(expected)}")

def is_valid_percentage(x):
    # input your code by yourself
 
assert_equal(is_valid_percentage(-1), False)
assert_equal(is_valid_percentage(0), True)
assert_equal(is_valid_percentage(50), True)
assert_equal(is_valid_percentage(100), True)
assert_equal(is_valid_percentage(101), False)

-- 1 现在来公布答案,使用逆向思维来解决,判断小于0或者大于100,如果成立则输出False,如果不成立,则输出True,当正向思维占主导位置时,我们不妨给逆向思维让让步。

def assert_equal(actual, expected):
    if actual == expected:
        print("OK")
    else:
        print(f"Error! {repr(actual)} != {repr(expected)}")

def is_valid_percentage(x):
    # input your code by yourself
    if x < 0 or x > 100:
        return False
    else:
        return True
 
assert_equal(is_valid_percentage(-1), False)
assert_equal(is_valid_percentage(0), True)
assert_equal(is_valid_percentage(50), True)
assert_equal(is_valid_percentage(100), True)
assert_equal(is_valid_percentage(101), False)

# 2 开启今天的主题 'and',还是用上面这个题目开始,前面是or写的函数is_valid_percentage,现在使用and重写该函数

def is_valid_percentage(x):
    if x >= 0 and x <= 100:
        return True
    else:
        return False

-- 2 有没有跟我写的一样呢,如果有不一样的解决办法更好,当然有啊,一行搞定。

def is_valid_percentage(x):
    return x >= 0 and x <= 100

def is_valid_percentage(x):
    return 0 <= x <= 100

# 3 接下来,来尝试一些新东西。 

        给定一个包含三个元素的列表,检查三个元素是否相等。 

def assert_equal(actual, expected):
    if actual == expected:
        print("OK")
    else:
        print(f"Error! {repr(actual)} != {repr(expected)}")

def all_equal(row):
    ...

assert_equal(all_equal(["X", "X", "X"]), True)
assert_equal(all_equal(["O", "O", "O"]), True)
assert_equal(all_equal(["X", "O", "X"]), False)

-- 3 从上一题可以很简单得出,以下是三种解题方法,每种方法的原理都有备注。

def all_equal(row):
    # 直接判断每个元素是否相等
    return row[0] == row [1] == row[2]
    # 比较第一二位值是否与第一个相等
    return row[0] == row[1] and row[0] == row[2]
    # 将每个列表第一个值拿出来,组成一个新列表,与原列表相比较是否相等
    return row == [row[0], row[0], row[0]]

-- 总结

        and 相对于 or,使用起来更简单,更符合正向逻辑。

        在使用中,区别于or逻辑是,当and两端都是True是,等式结果才是True,当等式两边有一个是False,则结果都为False。 

 

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值