今天在图书馆继续复习 Python 条件语句,也看了丘维声老师的高等代数课。两部分都还停留在辨认基本概念的阶段:Python 容易在符号和缩进上出错,高代第一节课则一下子出现了很多新名词。

f、冒号与缩进
格式化字符串的 f 要写在引号外面,并且紧挨着开引号,例如 f"{number} 是一个整数"。如果把 f 写进引号,它就只会成为普通字符,Python 也不会替换花括号里的变量。
if、elif 和 else 后面都不能忘记冒号。今天还需要把“顶格”说得更准确一点:elif 和 else 应当与它们所对应的 if 保持相同缩进,不是任何时候都从整行最左边开始。进入某个分支以后,里面的代码还要再缩进一级。
下面的闰年判断同时包含了外层 if 和内层 if—elif—else:
year = int(input("请输入年份:"))
if year % 4 == 0:
if year % 100 != 0:
print(f"{year} 是闰年")
elif year % 400 == 0:
print(f"{year} 是闰年")
else:
print(f"{year} 不是闰年")
else:
print(f"{year} 不是闰年")
这里,内层的 elif、else 与内层 if 对齐;最后一个 else 则与最外层 if 对齐。嵌套以后,缩进本身就是程序结构的一部分,不能只看每一行写了什么。

pass 不是跳过后续程序
pass 是一条不执行任何操作的空语句。Python 不允许代码块完全空着,所以暂时没有准备好分支逻辑时,可以先用它占位:
if year > 2026:
pass
print("程序继续运行")
执行到 pass 时什么也不会发生,程序会继续向下运行。它与 continue、break 或 return 不同,既不会直接进入下一轮循环,也不会退出循环或结束函数。
从 n 元线性方程组到矩阵
今天还看了丘维声老师高等代数课的第一节。课程从 n 元线性方程组讲到矩阵、向量空间以及方程组解的情况,概念来得很密。我现在还没有把它们真正连起来,只能先抓住矩阵尺寸这条线。

如果一个线性方程组有 s 个方程、n 个未知数,那么它的系数可以排成一个 s × n 矩阵:s 表示行数,对应方程的数量;n 表示列数,对应未知数的数量。因此,一个 4 × 4 矩阵有四行四列;如果它是方程组的系数矩阵,就对应四个方程和四个未知数。
把未知数组成列向量 x,把等号右边的常数组成列向量 b,整个方程组可以简写成 Ax = b。若把常数列也接到系数矩阵右边,就得到增广矩阵 [A | b],它的尺寸是 s × (n + 1)。矩阵在这里不只是一张数字表,而是一种更紧凑地记录方程组的方法。
课程还把 n 元线性方程组带到了 n 维向量空间。现在我只能先记住:n 个未知数组成的解可以写成一个 n 维列向量。它与解空间、线性相关之间到底怎样连接,还要继续往下听。

今天的困难,一个是 Python 的缩进层级,另一个是高等代数概念之间的关系。下一次可以各做一件具体的事:重新默写一段嵌套条件语句,再写出一个含三个方程、四个未知数的系数矩阵,亲自确认“行对应方程、列对应未知数”。
今天先记到这里。
评论
0 条