今天上午去了一会儿图书馆,晚上又回去了。主要继续学 Python 的基础语法,也重新整理了数学、编程和英语之间的学习顺序。
中间还有一个很实际的问题:刚才写的东西忘记保存了。写 Python 时也老是忘记切换中英文输入法,结果不是符号打错,就是写到一半才发现状态不对。这些不算难知识,却会不断打断练习。

先把几个运算符说准确
今天接触到的几个运算符,写法很短,但含义不能只靠中文名字猜。
/是普通除法。在 Python 3 中,结果通常以float表示,例如7 / 2得到3.5,4 / 2得到2.0。//是向下取整除法(floor division)。7 // 2得到3,但-7 // 2得到-4,因为它向负无穷方向取整,不是简单地把小数部分删掉。%是取模运算。比如7 % 2得到1。它和//满足a == (a // b) * b + a % b。**表示乘方,例如2 ** 3得到8。+=、-=是增强赋值。x += 1可以理解为用x + 1的结果更新x,x -= 1同理。
这些概念目前还只是基础辨认,之后需要用正数、负数和小数分别试几次,特别是 // 与 % 的组合。
if 和 else 后面的冒号
今天还反复碰到一个语法细节:if 和 else 这一行都要以冒号结束,下一行再用缩进表示代码块。
score = 700
if score >= 680:
print('恭喜你进入大学生活')
else:
print('高考结束')
冒号告诉 Python 接下来会出现一个代码块,缩进则说明哪些语句属于这个分支。只记得条件、忘了冒号或缩进,程序都不能按预期运行。

为什么 0.4 − 0.3 不一定正好显示为 0.1
上午还注意到一个现象:输入 0.4 和 0.3 后,程序输出的差是 0.10000000000000003。
这不能简单理解成“电脑按二进制运算,所以一定会损失”。更准确地说,许多有限的十进制小数,在二进制中没有有限表示。Python 的 float 只能保存一个非常接近它们的二进制近似值,运算后,这个很小的误差有时就会显示出来。
x = 0.4
y = 0.3
print(x + y) # 0.7
print(x - y) # 0.10000000000000003
如果只是比较计算结果是否“足够接近”,可以使用 math.isclose();如果是金额等需要精确十进制表示的场景,可以了解 decimal.Decimal。今天先记住误差的来源,还不能算掌握了浮点数。

0.4 − 0.3 的输出把浮点近似误差直接显示了出来。把学习主线重新排清楚
今天也调整了一下学习策略。现在更适合把学校教材放在第一主线:先跟紧课程里的定义、定理、例题和作业,把本专业的基础打牢。
Abbott 的 Understanding Analysis 作为第二遍理解。它暂时不替代学校教材,也不急着大量刷题,而是帮助我接触严格定义、定理为什么成立,以及数学证明应该怎么写。等学校课程碰到相近主题时,再回到书里做对应阅读,主次会更清楚。
Python 和 English 继续保留。Python 用来训练计算与表达过程,英语则放进教材、术语和原文阅读的具体语境里。这样不是同时铺开四条同样重的线,而是一条课程主线,加上分析学、编程和英语三个辅助方向。

下一次写代码前,我需要先看一眼输入法状态,运行前保存文件;学习结束时,再用几行字记下“今天试了什么、哪里还不确定、下次从哪继续”。这比等到忘记保存以后再生气更具体。
今天先记到这里。
评论
0 条