# 行号大于列号的地方都为0即为上三角矩阵,创建二维数组,循环判断即可
n = int(input())

table = []
for _ in range(n):
    a = map(int,input().split())
    a = list(a) # 这里如果不用list转化为列表,用append加到table里table 里存的是同一个 map 对象的引用。map 对象只能被一次性遍历,第二次再访问就空了
    table.append(a)

for i in range(1,n):
    for j in range(i):
        if table[i][j] != 0:
            print("NO")
            exit()
print("YES")

找到NO之后用exit()退出比较有意思,这是退出整个程序,所以即使print(“yes”)在循环之外,也不会出现打印NO,又打印YES的情况。而把循环整个处理完之后,都没找到NO,这时候打印YES是相当合理的

② 上三角矩阵,想到的第一反应就是,找到所有符合条件的下标代表的值,判断是否满足为0,全部满足,则为YES,反之NO。若二维数组为table[i][j],那对角线是 i == j 的时候,也即所有行号大于列号的地方就是需要判断的地方,第二个for循环作为列表时,可循环对象就应该在i以内,即for j in range(i):