逻辑值(布尔值)

逻辑值只有两个,一个代表成立,一个代表不成立。

一个是英文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
2
3
4
5
a = input("输入三门科目的成绩:")
b = a.split(" ")
c = int(b[0])
d = int(b[1])
e = int(b[2])

成绩比较

这里我们就要用到逻辑运算了,这里我们定义,如果成绩大于90,就满足条件,则为优秀,反馈值为1;如果低于90,就不满足条件,反馈值为0

1
2
3
f = c>=90
g = d>=90
h = e>=90

结果的输出

每一科输出的结果都只能是0或1,把这些数加起来就能求出几科达到优秀,最后输出,把这些数值加起来

1
2
i = int(f) + int(g) + int(h)
print(str(i)+"门优秀")

代码示例

1
2
3
4
5
6
7
8
9
10
11
#成绩是否优秀,逻辑运算
a = input("输入三门科目的成绩:")
b = a.split(" ")
c = int(b[0])
d = int(b[1])
e = int(b[2])
f = c>=90
g = d>=90
h = e>=90
i = int(f) + int(g) + int(h)
print(str(i)+"门优秀")