(笔记)计算机科学和PYTHON编程导论——第四讲 函数

课程内容及目标:

  • 学习循环计算并将它们抽象化,即学习函数内的计算方法,允许我们将计算细节和计算的使用区分开来,也叫作黑盒抽象
  • 引进环境的形式,帮助我们进行可视化处理,观察如何使用python解释器的函数将名字分配给相应数值,如歌检索数值
  • 将有能力将任意计算转化为函数,将函数作为其他计算的组成部件


1.函数:

基本格式:

def <function name> (<formal parameters>):
    <function body>

2.环境:

是一套形式体系,用于追踪变量和数值间的绑定关系。事实上,它不仅仅适用于赋值语句的常规绑定,还可以更广泛地应用到函数调用中



3.求x的p次幂

x = float(raw_input('Enter a number:'))
p = int(raw_input('Enter an integer power:'))

def iterativePower(x, p):
    result = 1

    for turn in range(p):
        print('iteration:'+str(turn)+ 'current result:'+str(result))
        result = result * x
    return result

4.求一个数的平方根:

def findRoot1(x, power, epsilon):
    low = 0        #此处有隐患,以x=-25为例,low=0,high=-25,ans=-12,power设为2,那么-12**2<-25,那么让low=-12。但-25的
    high = x       #平方根为-5,应该在0~-12之间取,产生了错误,原因是low应该小于high但在这里却low>high
    ans = (high + low)/2.0
    while abs(ans**power-x)>=epsilon:
        if ans**power<x:    
            low = ans       
        else:
            high = ans
        ans = (high + low)/2.0
    return ans

让我们输入findRoot1(-25, 2, 0.001),发现出错

改进:

def findRoot2(x, power, epsilon):
    if x<0 and power%2==0:
        return None
    #can't find even powered root of negative number
    low = min(0,x)
    high = max(0,x)
    ans = (high+low)/2.0
    while abs(ans**power-x)>=epsilon:
        if ans**power<x:
            low = ans
        else:
            high = ans
        ans = (high+low)/2.0
    return ans

让我们输入findRoot2(0.25, 2, 0.001),发现再次出错,原因是0.25的平方根为0.5,二分法第一次ans的值为0.125,然而答案不再0-0.25之间,而在0.25之外。再次进行修改

def findRoot3(x, power, epsilon):
    if x<0 and power%2==0:
        return None
    #can't find even powered root of negative number
    low = min(-1,x)
    high = max(1,x)
    ans = (high+low)/2.0
    while abs(ans**power-x)>=epsilon:
        if ans**power<x:
            low = ans
        else:
            high = ans
        ans = (high+low)/2.0
    return ans


5.关于文件导入:

import circle
pi = 3.0
print pi
print circle.pi
print circle.area(3)
print circle.circumference(3)

上述程序通过“文件名.”方式来引用文件中的变量和方法,并未全部导入

from circle import *
pi = 0.0
print pi
print area(3)
print circumference(3)

而这段代码的第一行将文件中所有的变量引入,可以在不定义变量的时候直接得到文件中变量的值


6.一些方法:

str.upper():将字符串中的小写字母转为大写字母

str.isupper():检测字符串中所有的字是否都为大写

str.islower():检测字符串中所有的字是否都为小写

str.capitalize():将字符串的第一个字母变成大写,其他字母变小写

str.swapcase():对字符串的大小写字母进行转换

str.find():str指定检索的字符串;beg开始索引,默认为0;end结束索引,默认为字符串长度。用于检测字符串中是否包含字符串。如果str不在string中返回-1

str.index(str, beg=0, end=len(string)):str指定检索的字符串;beg开始索引,默认为0;end结束索引,默认为字符串长度。用于检测字符串中是否包含字符串。和find()方法一样,但如果str不再string 中会报异常

str.count(str,start=0,end=len(string)):用于统计字符串里某个字符出现的次数,str搜索的字符串;start字符串开始搜索的位置,默认为第一个字符;end字符串结束搜索的位置,默认为字符串的最后一个位置    

str.replace(str1,str2):把字符串中old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换不超过max次

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值