MIT计算机编程导论笔记(第四课)

上节总结:

         赋值语句(assignment)

         条件语句(conditional)

         输入输出(I/O)

         循环结构(loop constracts):for, while

         数据类型

Turing complete: 图灵完全,以上知识足够写出任何程序

在一个文件放置大量代码的缺陷:

         难以寻找需要的代码

         难以调试

         难以了解代码的目的

两样重要的东西:分解(decomposition)和抽象(abstraction)

分解:将代码分解为可循环利用的独立模块

抽象:忽略细节内容,黑箱设定。给予合法正确的输入,返回正确期望的输出

函数:可以将代码分解为模块,可以实现抽象(忽略实现细节)。函数的实质—构建基本指令

         定义函数的语法:

         def  function-name(x,y):

                   return None

         return—返回函数的结果

         None标志:无实际返回值。打印值为None的对象或返回None的函数时将无输出

         *在每个分支使用return来返回值是一个好的编程规则

         函数的调用:

function-name(param-value)

x = function-name(param-value)

         函数中的变量作用域都为本地

局部变量:

         局部变量不影响全局变量.函数中定义的变量只在函数中作用。

函数功能说明注释:”””Return xxx to xxx”””

练习:农场养有鸡和猪,有20个头56只脚,鸡和猪各有几只?(假设无畸形以及残疾。。)

           方案:穷举,蛮力算法

转换类型:x = int(raw_input(“enter a number”))

几乎所有可以用元组的地方可以使用列表代替

*注意到一个特殊的赋值方法:使用元组/列表同时为多个变量赋值:

         x , y , z = (1, 2, 3)

         此时x值为1,y为2,z为3

递归:

         将问题分解为小规模的同一个问题的若干版本以及一些其他操作

         举例:美国居民的国籍定义。

练习:1. 判断文字是否回文(Palindrome)(从左到右以及从右到左是否相同),使用递归

           2. Fibonacci数列(前两个数字为0,1,后面的数字为前两个数字之和)。起源于斐波那契数兔子,兔子出生1个月可开始繁殖,假设每次都生两只一公一母,那么X月后,总共会有多少兔子

posted @ 2011-06-28 00:38  Scythe_SHAN  阅读(303)  评论(0)    收藏  举报