我发现很难理解代码中的布尔逻辑

I am finding it hard to understand Boolean Logic in code

提问人:Networking Space 提问时间:12/10/2022 最后编辑:Hampus LarssonNetworking Space 更新时间:12/11/2022 访问量:64

问:

下面的代码包含带有布尔表达式的 Python 代码。请帮助我理解其中的逻辑以及它们如何产生不同的结果。

#code 1
for row in range(7):#Code to print rows
    for col in range(5):#Code to print columns 
        if ((col == 0 or col == 4) or row!=0): 
            print("*", end = "")
        else:
            print(end = " ")
    print()
#Code 2
for row in range(7):#Code to print rows
    for col in range(5):#Code to print columns 
        if ((col ==0 and col == 4) and row!=0): 
            print("*", end = "")
        else:
            print(end = " ")
    print()
#Code 3
for row in range(7):#Code to print rows
    for col in range(5):#Code to print columns 
        if ((col ==0 or col == 4) and row!=0): 
            print("*", end = "")
        else:
            print(end = " ")
    print()
#code 4
for row in range(7):#Code to print rows
    for col in range(5):#Code to print columns 
        if ((col ==0 and col == 4) or row!=0): 
            print("*", end = "")
        else:
            print(end = " ")
    print()
python-3.x 值逻辑 布尔 值运算

评论

0赞 Tranbi 12/10/2022
您应该从学习布尔逻辑的基础知识开始,然后在此处提出具体问题。

答:

0赞 Axel Kemper 12/11/2022 #1

这四个代码有一个共同点:
两个嵌套循环经历不同的情况。 对于每种情况,都会计算一个布尔表达式。根据结果,打印一个“*”,一个间隙/空格。
7x5 = 35truefalse

在英语中,四个布尔表达式可以描述如下:

1: ((col == 0 or col == 4) or row!=0)

当 是 或 或 不等于 时,这是正确的。
换言之:对于第一个,有两个“*”列。
对于其余六行,所有列的结果均为“*”
col04row0row

2: ((col == 0 and col == 4) and row!=0)

这只能适用于最后六行。
但不能同时有两个不同的值。
因此,表达式始终为 。这是一个矛盾。
colfalse

3: ((col == 0 or col == 4) and row!=0)

这只能用于五列中的两列。
这是第一个.
truefalserow

4: ((col == 0 and col == 4) or row!=0)

该部分是矛盾的,因此总是.
但该部分是最后六行的。
因此,打印一行空白行,后跟六行“*”
colfalserowtrue