感觉很好玩就上手很快捏
首先是红薯了一下python下载;
然后是学习lecture2 命名
自己之前学过皮毛C,然后这个语言和c的课程有熟悉思路但也有语言习惯差异。
lecture 2 第一节 命名 Assignment statement
Assignment statement 赋值语句
(1)数学符号引入
教授引入了pi说明不是python不认识pi,而是非现成的
所以我们要
from math import pi
这样键入pi就会报值
接着还可以运用引入符号进行计算
pi*71/223
会报计算结果
(2)math包引入三角sin函数
同理, from math import sin
并报 sin
会output its <built-in function sin>
然后就可以用于计算
sin(pi/2)
会报运算结果;
(3)python运算逻辑说明
radius=10
键入radio——返回10!
这里要说明p和stata运行都非常重视前后逻辑;
然后就还是可以用这个变量进行计算
2*radius——20
②可以同时定义多个变量计算公式,例子为:
area,circ=pi*radius*radius,2*pi*radius
然后输入area就会报结果314
注意:这里,如果改 radius=20的话,
area并不是一个实时联动公式而只会储存值,所以area值不变,还是314,它不记得area是r²来的了。
(2)assignment statements赋值语句功能二:定义函数
这里注意到p还是像stata一样只会记忆公式定义发生前的事儿,所以f先=的旧max,你后头赋值max=7,然后调用f的时候会发现f还是=max原定义。
但是更大的槽点在于,就是max作为一个内置函数又同时能被用作变量名从而引发以上歧义(……)
(3)def函数
首先我们通过operator模块引入内置运算符Infix operator加、乘
from operator import add,mul
然后我们可以通过def语法自行定义函数,注意这里的锁紧块indented block,这是p语言当中用来表示上下级的语法。
def square(x):
return mul(x, x)
然后打出square,会显示这是一个函数;
接下来就可以使用自定义函数,square(11)等等;squar(add(3,4))
然后就是说,def定义解决了上述通过赋值进行定义无法使area与半径变量同步保持更新的问题。
注意保存笔记,中途因为切换网页查找英文术语的缘故丢失了未保存的部分笔记内容,习惯要规范一些。
综合复习以上的表达内容↑
然后是最后的嵌套函数思考题,我得出的运算答案是3
节2 Environment Diagrams
Environment Diagrams可以帮助可视化解释程序的过程。它显示了一些框架,就像是计算科学人为了帮助理解会画的一些boxes和arrows
- 框架在哪?内置的python环境没看见……看起来像是课程老师自己开发的讲解环境……但确实很牛逼
视频中使用的网站似乎已经更名,但是参考其他小伙伴的 Environment Diagrams找到了python官方的Online Python Tutor - Composing Programs - Python 3这个就像是gpt的那种程序讲解,不过是python自带的。如果有什么看不懂的程序,粘贴到这里来看一看(+引擎提问)。
那么就是输入代码并点击可视化按钮,代码行2就对应右侧框架。
【重要】规则:在框架之内,name不能重复,只能绑定一个值,这在python语言当中是非常重要的规则,是python程序的一部分。
- 即一变量名绑定一值,多赋值时原储存值会消失
环境图表的重要性在于当很多值重复出现的时候,我们可以追踪其不断更新的赋值过程而不丢失其赋值意义。
- 左侧命令前,绿色箭头是已执行;红色箭头是即将执行
【规则】- 在第三行当中所体现出的p语言规则细节是:同行程序处理时不具有先后顺序哦,所以当b处理为3了以后,a赋值b还是会=2而不是等同行处理的3
【节后练展示】
那么下面,我们就借用frame来对上一小节末的复合嵌套函数例题进行讲解:
键入如下代码并进行逐步可视化分析,右侧frame将一一给出函数映射。
f=min
f=max
g,h=min,max
max=g
max(f(2, g(h(1, 5), 3)), 4)
可以得出3是正确答案,但是也要保证题解过程是正确的。可以看到在上一小题当中,相当于可以层层拆解为四层嵌套函数,而函数f g h其实都映射向内置函数max 和 min
老师:天,好复杂,不是吗(笑死)不,老师讲解得非常细致而且很体现问题解决的分步思想。
这里,从最内层开始,每一层的函数都有其对应含义并返回一个返回值,四层嵌套函数最终返回值3.