词汇:
armamentarium | 设备 | iteration | 迭代 |
data structure | 数据结构 | recursion | 递归 |
module | 模块 | modularization | 模块化 |
algorithm | 算法 | algorithmically | 算法 |
abstraction | 抽象 | sorting | 排序 |
token | 令牌 | sort | 种类 |
stitch together | 凝聚,结合 | fundamentally | 从根本上 |
standard classes | 标准类 | perform | 执行 |
storage | 存储 | built-in operations | 内置(嵌入式)操作 |
figure out | 估计,算出 | abstract | v.提取,抽象 |
encapsulate | 封装 | assume | 假设 |
crucial | 至关重要的 | despite | 尽管 |
encryption scheme | 加密方案 | philosophical | 哲学的 |
declarative | 声明的 | parallel | 并行的 |
imperative | 必要的 | (an) integer | 整数 |
4 times 4 | 4的4次方 | x divided by g | x/g |
execute | 执行 | stick in | 陷入… |
square root | 平方根 | quadratic root | 平方根 |
vacuum tube | 真空管 | relays | 继电器 |
panicking | 恐慌 | nuance | 细微差别 |
sophisticated | 复杂的 | Comments | 注释 |
Branching programs | 分支程序 | conditional | 条件 |
indentation | 缩进 | administrivia | 信件,新闻 |
prior | 优先的 | ramp | 斜坡 |
curriculum | 课程 | sophomore | 大二 |
justifiable | 无可非议的 | tackle | 处理 |
competence | 能力 | nasty | 令人不愉快 |
intimidate | 恐吓 | tactical | 策略的 |
derogatory | 贬低的 | insulting | 侮辱 |
scratch | 划,绞尽脑汁 | scratch | 抄袭 |
sidebar | 工具条,侧栏 | recitation | 背诵 |
quiz | 测试,询问 | sensitive | 敏感的 |
lethal | 致命的 | weed | 杂草 |
psychiatric | 神经病 | plausible | 似是而非 |
gruel | 泡饭,劳累 | thrill | 紧张 |
mandatory | 命令,强制的 | draconian | 严厉的 |
ironically | 讽刺的 | grab | 夺取 |
swing | 摇摆 | annotation | 注释 |
spur | 鼓励,刺激 | preamble | 前言 |
instinct | 本能 | highfalutin | 傲慢的 |
artifact | 手工艺品 | mechanism | 原理 |
imperative | 必要的 | assertion | 断言 |
axiom | 公理 | heck | 见鬼 |
deduce | 推论 | recipe | 食谱,方法 |
capture | 捕获 | arithmetic | 算法 |
flavor | 风味 | diagram | 图解 |
configure | 安装 | component | 组成 |
stack | 堆栈 | neat | 整洁的 |
emulate | 仿真 | spit | 唾液 |
interpret | 解释 | intrigue | 阴谋 |
analogy | 类比 | stiff | 僵硬的 |
yolk | 蛋黄 | nominee | 候选人 |
tease | 取消 | arbitrary | 任意的 |
progenitor | 祖先,起源 | semicolon | 分号 |
dimension | 方面,维度 | trade-off | 权衡,交易 |
matrix | 矩阵 | vector | 矢量 |
semantics | 语义 | atrocious | 残暴的 |
worrisome | 令人烦恼的 | propagate | 传播 |
taxonomy | 分类学 | relevant | 相关的 |
merge | 合并 | sucker | 傻瓜 |
belt | 带,腰带 地带 | deliberate | 商讨 |
dive | 潜水 | dynamic | 动态 |
nitty-gritty | 事实真相 | hash mark | 哈希标记 |
nuts and bolts | 螺母和螺栓 | precondition | 前提 |
operator | 操作者 | intuition | 直觉 |
operand | 操作数 | brussels sprout | 抱子甘蓝 |
branch | 科 | lousy | 糟糕 |
conditional | 有条件的 | suffix | 后缀 |
iteration | 迭代 | module | 模 |
atomic | 原子 | literally | 按照字面 |
variation | 变动 | motivation | 动机,意志 |
nuance | 细微差别 | interior | 室内 |
essential | 必要 | odd | 奇数 |
evaluate | 评估 | colon | 冒号 |
explicit | 明确的 | brace | 支撑 |
replica | 复制品 | nest | 巢 |
concatenate | 串联 | tentative | 试验 |
bribe | 贿赂 | faculty | 学院 |
paren | 括号 | inherent | 固有 |
spectrum | 光谱,范围 | preface | 前言 |
fudge | 蒙混 | garbled | 乱码 |
lexicographic | 字典 | recursion | 递归 |
discipline | 学科 | procedure | 程序 |
remainder | 余数 | purple | 紫色 |
precedence | 优先权 | clause | 条款 |
exponentiation | 幂,乘方 | indentation | 缩进 |
parentheses | 括号 | awfully | 非常 |
mutation | 突变,变动 |
Turing halting problem 图灵停机问题
无解的程序,输入任何信息,能判断输入的编码是否会结束并给出答案。
计算机做了两件事:计算 和 记录结果
steps 1+2+3 = an algorithm
1)sequence of simple steps. (A checklist)
2)flow of control process that specifies when each step is executed. (A flow of control)
3)a means of determing when to stop. (A thing)
计算机有以下三部分构成:
内存(存储程序和数据)
控制单元(对已执行的命令计数)
ALU--Arithmetic Logic Unit 算术逻辑单元算术逻辑单元(检测特定值的大小是否符合停止或跳转程序的条件)
计算就是有顺序会终结的指令集,编程就是用组合基本指令,分出控制流,得到结果。
interpreter 解释器
程序计数器指向程序将执行的下一条命令
图灵机的6个原语:左移,右移,扫描scan,读取,写入,stop(do nothing)。
Syntax 语法 - what are legal expression "cat dog boy" (Lots of help. Python comes built-in with syntax checker, find one error each time)
语法用来描述语言中,什么表述是合法的。---判定一个字串是否合法
语法描述了如何将合法表达式组合在一起
Static semantics 静态语义 -what programs are meaningful, which expression make sense "My desk is Susan" (Some help.)
静态语义表示什么程序是有意义的,哪种表达是有意义的。---判定一个字串是否有意义
Full semantics 语义 - what does program mean, what happen when run
完整语义即程序想达到什么目的,运行程序会产生什么效果。---赋予一个合法的语句意义。
语义描述了我们如何从那些表达式中推导出相关的含义,从而解决我们想解决的问题
形式语义:按照语法把字符串和符号组合在一起无静态语义错误的语句。
这就是我们编写代码的意义所在。 一条合法的表达式有且仅有一种意思。
程序是算法的具体实现,计算思维模式意味着一切都可以看做是一个涉及到数字和公式的数学问题。
Lecture2 编程基础
Low level language---Checker检查器(处理低级代码,确认语法和静态语义正确)---Interpreter解释器(指令序列:按序执行指令)---Output
High level language A (Compiled language编译型语言)---Checker---Compiler---Object code(整体转化为low language)---Interpreter---Output
High level language B (Interpreted language解释型语言)---Checker---Interpreter(每一条转化转换成低级指令)---Output
python的IDLE名字为shell,是因为遮住了编译成低水平编程语言的过程。
Scalar objects 标量对象 (不可分割)---int,float,bool
查询对象类型 type(object)
一般expressions表达式的语法
整数型的除法:结果是去掉余数后的quotient商 ,向下取整(Python3中变为float) >>>3/2 1
求remainder余数 %
平方、乘方 ** i raised to the power of j
Operator precedence 优先运行
> < >= <= == != 返回True False
<> 等同于 != 目的是为了和C语言保持consistency一致性,但过时,尽量不用
>> << 二进制移位运算符
a and b
a or b
not a
Tpye conversion(type casting)类型转换 float(3)---3.0 int(3.9)---3 保留整数部分
None(only value in Python of type--"None Type") used to represent the absence of a value
boolean运算优先级 : Parentheses括号>not>and>or
Question:为什么10/3会变成3.33333333335 2.2*3.0=6.60000000000005最后一位5是怎么来的?
Answer:For the last problem (10), typing the expression into your Python interpreter may give a result that is not exact. For example, 6.6000000000000005 instead of 6.6. This is because computers have difficulty storing fractions小数 exactly in binary. 这是因为计算机难以精确的用二进制存储小数造成的。So when performing calculations, numbers first get converted to binary 开始执行时,将十进制转换为二进制,then the calculation is performed and the result converted back into decimal计算后将二进制转换为十进制. However, fractions cannot be stored exactly in binary 小数不能完全存储在二进制(for example, there is no way to store 0.33333 repeating exactly) so we introduce these small rounding errors that propagate传播 until the final answer.
5*2 == 5.0*2.0 10 == 10.0 True ==仅判断的是数值或布尔型是否相等,而不考虑其数值的类型
即同样的数值 整数 == 浮点数
round() 四舍五入
通过help(round)查阅 得 round(number[,ndigits]) ->number
意思就是通过调用round函数,将number四舍五入为精确到小数点后ndigits位的数,默认为0(即默认返回整数)。
例 round(1.5)返回2 round(2.5)返回2 注意当数在中间的时候返回到最近的偶数 round(2.51)返回3
注:round (bool) 返回0或1。
>>>a = 3 赋值assignment
>>>a + 2.0 返回5.0,但此时a依然为3
>>>a == 5.0 返回False
>>>a 返回3,==只作判断,不会赋值
>>>b = 10
>>>c = b > 9
=是赋值,意思是将等号右边的值赋给等号左边的变量,同四则运算,先计算b>9,再把值给c
一个容易出bug的地方:更新一个变量的值,并不会将用到这个变量的其他变量的值一起更新,因为其他变量的值在之前就储存好了。
Non-scalar objects 非标量对象 (可访问其内部duixiang)
operator overload 操作符重载 : 同样的操作符,针对不同对象,做不同的操作
>>>'a' + 213 error
>>>‘a’ + str(123) 将数123转化为字符串'123',再与‘a’拼接
len() 查询字符串长度
Indexing索引
>>>'abc'[0] 返回‘a’ 'abc'[3] 返回error ‘abc'[-1]返回'c' ‘abc'[-3]返回error
索引 的长度(范围)为[-len(),len()-1]
Slicing切片 string[start:end:step]
>>>'abc'[1:100] 返回'bc'
>>>'abcd'[1:2] 返回'b'
in 和 not in test for membership (string,list,tuple,dictionary)
>>>str1 = 'world'
>>>'orl' in str1 返回True
>>>str[:-1] 返回'worl' -1→d,相当于[0:4]
print() 打印
input() raw_input() ()中可以写string提示输入什么内容
所有获取的输入当做string,所以如果需要输入一个数字,需要转换他的类型 weight = float (input('>>>Your weight:'))
Sets of programming 程序集: branching 分支, conditional 条件 and iteration 迭代
条件语句 基于布尔值测试结果,测试为True 则执行真值块,测试为False 则执行假值块(可选)
if : (必有 唯一)
elif: (可选 多个)
else: (可选 唯一)
一条语句只执行一次
temp = ‘32’
if temp > 65:
print('Hot')
返回 Hot 即 '32' > 65 为True。原因:
在Python2中,数字型对象(int/float/long/complex等) < 其他非数字型对象;
如果两个都是非数字型的对象,则按照类型名的顺序进行比较。
eg:dict < str → {} < 'abc' ‘abc' > [1,2] 'abc' < (1,2)
而在Pytonn3中,不再允许不同类型的object进行比较
常数时间(constant time) 即程序运行时间仅取决于程序长度。
Problem11
两个变量A,B,可以是字符串或数字,要求A,B其中一个是字符串则打印'string involved'.
这道题首先不知道A,B的类型,所以需要type()函数确认;
判断是否为字符串,应该用 ==str 判断,而不应该用 is str 或 is not str 判断。(不能写成not is 和 string)
>>>'aaa' is not str 返回True
这道题正确的写法为 if type(A) == str or type(B) == str: print('string involved')
不应该写成 if type(A) or type(B) == str,因为==的执行优先权高于or,且or左侧的type(A)不符合语法。
还有一种正确的写法 if isinstance(A,str) or isinstance(B,str) 利用isinstance()函数
---------------------------------------------------------------------------------------------------------------------------------
声明:第一次写blog,自学用,引用了 leelovelin、s_ywx、thundercaller、chucksonwheel、thundercaller、pivilion几位前 辈的部分内容,如有侵犯版权之嫌请留言,这方面不很懂
--------------------------------------------------------------------------------------