Python的逻辑值与关系运算、逻辑运算
逻辑值(布尔值)
逻辑值只有两个,一个代表成立,一个代表不成立。
一个是英文True,另外一个是英文False,注意大小写敏感。
而在计算机中,为了方便使用,True对应一个数值1,False对应一个数值0。
可以print(int(True)) 和print(int(False))进行验证。
逻辑运算
在需要将逻辑结果进行叠加时,单纯的关系运算很多时候力不从心。就需要有逻辑运算将关系运算的结果进行结合。
逻辑运算在很多时候相当于语文语法中的连词,如并且、或者等。
逻辑运算符有三个
逻辑非运算:not
逻辑与运算(并且):and
逻辑或运算(或者):or
非运算结果
a的值 | 非运算结果(not a) |
---|---|
True | False |
False | True |
与(并且)运算结果
a | b | a and b的结果 |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
即左右两边有False结果即为False。
或(或者)运算结果
a | b | a or b的结果 |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
即左右两边有True结果即为True。
关系运算和逻辑运算结合举例
如:
a = 10 > 5 and 5 > 1即相当于 a = True and True,最后结果为:True
这个写法也是最标准的。或者的用法也类似。
其实上面的例子在Python也可以写成a = 10 > 5 > 1,最后的结果为True
因为上面的例子在Python里被特殊解释为a = 10 > 5 and 5 > 1,这个是语法定义的。注意C等语言无法按照这个方式执行。
但是,也要注意,如果你的式子是:a = (10 > 5) > 1,这个则相当于a = True > 1也就是a = 1 > 1最后的运算结果为False。
也就是如果指定了分步运算,就必须按照分步的结果进行运算。
思考练习
最高成绩题
题目解析
期中考试,考试科目只有3门(假设而已),输入这三门的成绩,输出其中有几门达到了优秀(我们定义的优秀仍然为100-90这个分数段,当然我们的成绩输入是符合逻辑的,即最高100分,最低0分)
这道题的意思就是判断输入的这三个成绩是否高于90分,即达到优秀的标准
输入并拆分列表
我们需要输入三科的成绩,这三个数要在一行里面,我们就要使用split的列表
1 | a = input("输入三门科目的成绩:") |
成绩比较
这里我们就要用到逻辑运算了,这里我们定义,如果成绩大于90,就满足条件,则为优秀,反馈值为1;如果低于90,就不满足条件,反馈值为0
1 | f = c>=90 |
结果的输出
每一科输出的结果都只能是0或1,把这些数加起来就能求出几科达到优秀,最后输出,把这些数值加起来
1 | i = int(f) + int(g) + int(h) |
代码示例
1 | #成绩是否优秀,逻辑运算 |