您的位置:首页 > 理论基础

MIT6.00.1X 计算机科学和PYTHON编程导论 第一周

2016-06-16 00:00 585 查看
第一讲 计算方法和计算思维的一些基本原则

这一整门课程将教你们怎样进行计算机编程,怎样发送计算机能够理解的指令,更重要的是让你们具有计算思维。

事实上计算机只做两件事情:计算和记录结果,以备后用。

每一台计算机都能做一系列简单的基本运算,我们称为内置运算。它们是由制造商提供给计算机使用的基本元素。整个课程中一件关键的事情是学会如何创造我们自己的计算方法。如何像计算机及一样思考,也就是计算思维。计算机很快,但同样需要设计好的算法。计算机也有不能解决的问题。

计算思维是什么意思?→什么是计算?→什么是知识?→

知识细分为两个部分:

陈述性知识: 我们可以认为是事实描述,并不总能帮助我们找到新信息

程序性知识(操作方法): 给了我们找到新信息的方法,方法即做某件事的一系列机械步 骤。程序性知识是那种指导我们去找寻东西的方法和说明书

计算内任何计算仅需6种原语就够了任何拥有这种属性的计算机,解释器,我们叫做
图灵完备的,那意味着任何你可以用某种编程语言来计算的东西。而且任何东西只要对某一种语言是可计算的,对其他任何语言也是可计算的

陈述性知识虽然是许多知识的基石,但不是我们需要的。我们的目标就是获取程序性知识,将问题分解为机械性的步骤,然后想办法将这些转换成机械或计算机能够理解的东西,
以便计算机为我们执行这些步骤

创造“方法”是什么意思:任何编程语言都提供一套原语集。它们是预先定义好的,是ALU中让计算机工作的组件,所以我们要在这些的基础之上来构建。与此类似,任何编程语言都提供一种方法或者机制来将原语组合形成更加复杂但合法的表达式

我们的目标是想要学习编程语言中的语法和语义。那些是构造合法的程序并且让它们做有趣事情的详细内容。但是我们真正想要做的是学会如何使用那些基本元素,将我们解决问题的"方法"翻译成计算机能够真正用来为我们工作的形式。我们想让计算机来计算出感兴趣的问题的答案,我们想提供算法(步骤序列)使之成真。我们想通过遵循我们编程语言的语法和语义的构建方式来做这件事,然后把这些都组合起来,我们就得到了能让它真正工作起来的概念。
我们需要以聪明的方式进行些运算,所以那种计算式的思维模式,将问题描述分解成"方法",即步骤的序列,这将非常有价值。

第二讲 python 基础知识

我们想要将计算思维应用于实践中,将一个问题分解成一系列机械步骤,好让我们推导出问题的解决方案。而且我们想将这样的描述通过某种方式转化成计算机也可以工作的形式,从而为我们服务。那表示我们需要一种描述这些步骤的方法,因此,编程语言便应运而生。编程语言定义了语法和语义,从而将计算的想法翻译成为机械步骤。语法描述了如何将合法表达式
组合在一起。而语义描述了我们如何从那些表达式中推导出相关的含义,从而解决那些我们想解决的问题。

本门课程选择了python作为编程语言。这是一种解释性语言。

程序:会包含一系列定义和命令

shell:shell只是一个程序,它允许用户在其中输入命令,这些命令会被计算机的操作系统直接执行

定义:定义是那些被计算和存储的东西

命令:它们是指示解释器去做某事的东西

本质上每个程序都会操作一个数据对象,每个数据对象都有一个类型,它定义了程序可以对这个对象做的事情。我们将看到,通常数据对象要么是不可分割的标量或者是非标量,拥有一个可以访问的内部结构。

Python中有3种不同的标量对象:

整数,用来表示我们所熟知的全部数字

浮点数,用来表示实数,即那些有一个小数点的数。

布尔的对象,通常也被称作bool,它表示真和假。

type(object) 这是一个函数,用于获取对象的类型

type(3) <type 'int'>

type(3.0) <type 'float'>

表达式由操作符和对象——数据对象——构成。它们可以组合起来,发出指令做一些不同于它们本身的事情。

操作符:+, -, *, /, %, >, <, >=, <=, ==, !=, and , or, not

+:将两个数相加,或将两个字符串连接起来

-:将两个数相减

/:将两个数相除,两边都为整数时结果为整数(商),只要一边为浮点数结果是准确的

%:取余数

() :可以改变运算优先级

< :小于符号,比较两个数,返回布尔值True或者Flase

> :大于符号,比较两个数,返回布尔值True或者Flase

>=:大于等于符号,比较两个数,返回布尔值True或者Flase

<=:小于等于符号,比较两个数,返回布尔值True或者Flase

==:等于符号,比较两个数是否相等,返回布尔值True或者Flase

!= :不等于符号,比较两个数是否不相等,返回布尔值True或者Flase

and: 与操作,两边都为真就返回真,其他返回假

or:或操作,两边都为假就返回假,其他返回真

not:取反,右边为真返回假,右边为假返回真

类型(对象):将对象转换成某种类型

例:int(3.9),将3.9转换成整型 结果为3

抽象化(赋值):通过一个名字把表达式的值存储下来,然后在任何我们需要的时候使用这个名字来得到

=:用于赋值,将变量和值绑定起来

例 pi = 3.14159

radius = 11.2

area = pi * r * r

非标量的对象是一种复合物,也是我们能获得的组成成分或组件。

字符串:str(string)类型的对象,字符串放在一对双引号(" ")或单引号(' ')之中

例: 'abc'

'123'也是字符串和整型不捅

字符串操作:

3 * 'a' 返回的是 'aaa'

'ab + 'cd' 返回的是 'abcd' 字符串使用+号进行连接

'a' + str(123) 返回的是 'a123' 字符串只能和字符串连接

这里的+的用法就是操作符重载,即使用相同的操作符对不同的对象做不同的事情

len(objec) 获取对象的长度

例: len('abc') 返回3

索引

索引从0开始计数

'abc'[0] 返回字符串中的第一个字符 'a'

'abc'[2] 返回字符串中的第三个字符 'c'

'abc'[3] 如果超过字符串的长度就会报错error

索引也可以逆向查找

'abc'[-1] 返回字符串中的最后一个字符'c'

切片技术(Slicing)

'abc'[start:end]包含头不包含尾

例 'abc'[1, 3] 返回 'bc''

python使用文件执行

在shell中直接输入,会给我们返回数据,但是从文件导入是不会返回的,文件中需要明 确指定输出

print() 输出语句:在shell中输出括号内的东西(python3需要括号,为了兼容尽量加 上括号),在输出前会计算好括号内的东西

例:print('abc') 输出 abc

print('your name is' + name)

print(3+4) 输出7

input()输入语句: 在shell中让用户输出数据,并返回用户输入的数据的字符串形式,可 以在括号中指定输入提示

例:name = input("what is your name? > ) 会在shell中打印what is your name ? > 并 让你输入数据,输入的数据会存入name中

如果需要输入数字,需要做类型转换int() 或者 float()

#:表示注释,#后面的都是注释

控制流:

通过条件判断程序执行,语法:

if 表达式1:

elif 表达式2:

.....

else:

elif和else可以省掉,根据需求添加,如果表达式1为真就执行if下面的代码块否则 就跳过if的代码块判断表达式2,如果表达式2为真则执行elif下的代码块否则就跳 过elif,以此类推,如果所有表达式都为假则执行else的代码块,执行完当前代码块 后就会结束条件判断执行下一条指令。条件判断语句中可以嵌套条件判断语句。

注:python中采用缩进与冒号搭配的形式来确定代码块的从属关系

例:

if x >2 :

print('x>2') #从属if的代码块

print('....') #从属if的代码块

elif x>1:

print('1<x<2') #从属elif的代码块

else:

ptint('x<1') #从属else的代码块

print('if end') #单独的语句,条件判断语句执行完后从这里开始执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息