计算机科学与Python编程导论_MIT 学习笔记(二)
来源:互联网 发布:苹果笔记本系统windows 编辑:程序博客网 时间:2024/05/16 10:15
编程语言
目标:
找到一种计算机能执行的、描述机械步骤的方式
程序语言定义这种方式的语法和语义
编程语言的选择:
1 低水平编程语言
源代码使用简单的计算和逻辑运算,checker检查语法和语义,没有错误后交给interpreter执行,最后得到output。
2 高水平编程语言
使用更加抽象的术语,封装了更复杂的运算
编译型(compiled)语言,在checker之后,将复杂的运算编译成最基础的运算——低水平的编程语言——再交给计算机执行。
3 比较
低水平编程语言更快,但是更难找bug;
高水平(编译型)编程语言更慢,但是更容易debug。
python 程序
程序是由定义和命令组成的一个序列
定义赋值,命令由python编译器执行
python的IDLE名字为shell,是因为遮住了编译成低水平编程语言的过程。
数据类型定义了程序对数据的使用方法
标量(不可分割)
非标量(可以访问其内部结构)
python中的标量:
整型(int)
浮点型(float)
布尔型(bool)
表达式的一般语法:
对象(object)+ 操作(operator) + 对象(object)
适用于整型和浮点型的操作:
加 减 乘 除 取余(%) 幂(**)大小比较(> >= < <= == !=)
改变数据类型(int() float())
若对象皆为整型,则结果亦为整型;若对象包含浮点型,则结果为浮点型(除法即向下取整)
适用于布尔型的运算:
或且非(or and not)
简单的抽象:赋值(assignment)
一个容易出bug的地方:更新一个变量的值,并不会将用到这个变量的其他变量的值一起更新,因为其他变量的值在之前就储存好了。
python中的非标量:
字符型(‘str’):放在两个、四个或六个单引号中间
适用于字符型的操作:
加 乘 求长度(‘len’)提取(‘[ ]’)切片(‘[ : ]’、‘[ : : ]’(最后一位为步长))
操作符重载:同样的操作符,针对不同的对象,做不同的操作(例如针对数字的+和针对字符的+)
提取和切片时,位置索引可以去负数,最后一位的索引为-1,倒数第二位为-2,以此类推
‘[::-1]’意为倒序。例:
>>> 'helloworld'[::-1]'dlrowolleh'
好的代码应该具备提升代码可读性的注释(‘#’),这些注释记录程序员为什么做出这个决定、每个区块的作用等。
分支程序
最简单的分支程序——条件
其中,False block不是必要的。
例:二叉分支
x=int(input('plz enter an integer: '))if x%2==0: print('') #换行 print('even')else: print('') #换行 print('odd')print('done')
例:多叉分支
x=int(input('pls enter an integer:'))if x%2==0: if x%3==0: print(str(x) +' is divisible by 2 and 3!') else: print(str(x) +' is divisible by 2 and not by 3!')elif x%3==0: print(str(x) +' is divisible by 3 and not by 2!')else: print(str(x) +' is not divisible by 3 or 2!')
以上程序都是常数时间的(constant time),即程序运行时间仅取决于程序长度。
- 计算机科学与Python编程导论_MIT 学习笔记(二)
- 计算机科学与Python编程导论_MIT 学习笔记(一)
- 计算机科学与Python编程导论_MIT 学习笔记(三)
- 计算机科学与Python编程导论_MIT 学习笔记(四)
- 计算机科学与Python编程导论_MIT 学习笔记(五)
- 计算机科学与Python编程导论_MIT 学习笔记(六)
- MIT《计算机科学与编程导论》课堂笔记
- MIT计算机科学集编程导论(二)
- 计算机科学导论学习笔记
- 计算机科学导论学习笔记
- MIT公开课:计算机科学及编程导论 Python 笔记4 函数分解抽象与递归
- 计算机科学及编程导论学习笔记 第二课
- 学习日记-MIT[计算机科学与编程导论]-5
- 学习日记-MIT[计算机科学与编程导论]-6
- 学习日记-MIT[计算机科学与编程导论]-7,8
- 《编程导论(Java)•0.1 编程与计算机科学》
- MOOC:计算机科学及Python编程导论
- MIT 计算机科学和Python 编程导论
- Kotlin基础
- 学习笔记--Java变量
- 1138. Postorder Traversal (25)
- C#和C++释放内存的区别
- Linux的基本开发工具
- 计算机科学与Python编程导论_MIT 学习笔记(二)
- 广东工业大学2017新生赛(决赛)-网络同步赛
- ACM过程中的提交结果(新手必看!)
- 线程详解
- Spring Boot的启动器Starter详解
- 另类的Go语法
- 即时配送的订单分配策略:从建模和优化
- Python基础-函数-函数参数
- 循环神经网络(RNN, Recurrent Neural Networks)介绍