mit python 公开课_Python和MIT

函数是为了找出某种计算的通用模型,例如计算平方根,等;

程序应该模块化和抽象,可以作为单独使用的模块。细节的抽象化,以及编写正规的引用文档

每个函数都有返回值,即使是返回一个值来停止函数运行。C:return 0;python :return

None;OC:return 0;

-----------------------------------------我是分隔线-------------------------------------------

Python函数的语法:

def 定义一个函数

NAME 给函数命名

return 程序运行到这里停止

None None的意思返回一个值,这个值说明函数是没有返回值的

-----------------------------------------我是分隔线-------------------------------------------

函数的本地绑定:函数内的赋值 有效范围只在函数内部。

函数的本地绑定不影响全局绑定

每个函数需要撰写说明文档;

并且在开局要做判断语句,为了判定数据的输入是否是你规定的类型和范围,为了防止别人不遵守规矩。

-----------------------------------------我是分隔线-------------------------------------------

穷举算法

问题:农场里有猪和鸡,有X个头和Y只脚。问有多少只鸡和猪。

输入头的数量和腿的数量。做出一个函数来判定猪和鸡的个数。(用C和objective-c和python写出来)。

问题:农场里有猪和鸡和蜘蛛,有X个头和Y只脚。问有多少只鸡,猪和蜘蛛。

输入头的数量和腿的数量。做出一个函数来判定猪,鸡和蜘蛛的个数。(用C和objective-c和python写出来)。

-----------------------------------------我是分隔线-------------------------------------------

递归:用不同的变量让函数去思考问题

归纳法的步骤or递归递推步骤;

具有继承意义的迭代。以循环的模式来运行的解决方法;

将问题分解为更简单的同类问题以及其它一些步骤;

回文的判断(从左,或者从右读,都是一样的字符串)

一:是否符合基础性要求,length>=1;是则继续

二:判断首尾是否相同;是则继续

二:将首尾各减1,判断是否相同,是则循环。直到最后,完全相同。

四:直到最后,完全相同。则返回YES。

扩展阅读:Fibonacci number :后面一个数是前两个数之和 (跟递归有关)

-----------------------------------------我是分隔线-------------------------------------------

python的数据类型

整型:int

python支持任意精度的整数 可以给int赋值任意大小的数

例如 2**10000(PC差点死机了。)

以L结尾的是LONG INTERGER

处理的数大于20E就跨入LONG INTERGER范围了

用L和L型数值相除。同样会得到L型数值,无论数值大小

浮点型:

遵守IEEE754。(这是科学计数法的变异,用一对尾数和指数来结尾浮点数)

即:mantissa 和exponent

1<=mantissa<=2

-1022<=exponent<=1023

现代计算机语言是64bit的;

1 bit for sign (符号:即+-号)

11 bit for expo (存放指数)

52bit for mantissa (存放尾数)

可以让我们表达大概17个数长的10进度精度;

-----------------------------------------我是分隔线-------------------------------------------

在python中显示会调用函数repr()。而它显示浮点数最多只会结尾到17位。例如在1/10;

这个浮点数。用二进制就无法完全得到。只能得到近似值。

例如 for i in range(10): s+=0.1

因为无法正确显示浮点数0.1

就会不断的累积添加错误。导致显示错误。上机练习,因为是python3

显示的跟课程不一样。求解答。

-----------------------------------------我是分隔线-------------------------------------------

python使用import来调用函数

例如调用math

import math

a = math.sqrt(2)

a*a == 2

False //因为对于浮点数取值。只会取17位以内的近似值。所以a*a!=2

所以在比较浮点数时,就需要写一个函数来比较其是否近似

abc(a*a -2.0)

写一个找出平方根的方法

1、找到不是完美值,例如根号2

successive approximation 逐次逼近法

每次逐次逼近法都有着相同的结构

guess initial guess //初始化guess

for iter in range(100); //一个100次的循环

if f(guess) close enough, return guess

//如果guess相当的接近了,返回

else guess = better guess //否则 guess 就==

更好的guess

Error 循环结束,未找到,返回Error

Bisection method

二分法

将数列分为两段。取中间数:

如果小了,则取右边的数列

否则如果大了。则取左边的数列

再循环

迭代的循环与我们所求值和返回值的精度有关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值