计算机科学与Python编程导论_MIT 学习笔记(二)

编程语言

目标:
找到一种计算机能执行的、描述机械步骤的方式
程序语言定义这种方式的语法和语义

编程语言的选择:
1 低水平编程语言
源代码使用简单的计算和逻辑运算,checker检查语法和语义,没有错误后交给interpreter执行,最后得到output。

低水平编程语言

2 高水平编程语言
使用更加抽象的术语,封装了更复杂的运算
编译型(compiled)语言,在checker之后,将复杂的运算编译成最基础的运算——低水平的编程语言——再交给计算机执行。

计算机科学与Python编程导论_MIT 学习笔记(二)_第1张图片

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'

好的代码应该具备提升代码可读性的注释(‘#’),这些注释记录程序员为什么做出这个决定、每个区块的作用等。

分支程序
最简单的分支程序——条件
计算机科学与Python编程导论_MIT 学习笔记(二)_第2张图片
其中,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),即程序运行时间仅取决于程序长度。

你可能感兴趣的:(学习笔记,算法)