第四章 函数的魔法
4.1重新认识函数
print()、input()、len()、int()……这些都是Python中的函数叫内建函数
Python 中所谓的使用函数,就是把你要处理的对象放到一个名字后面的括号里。简单来说,函数就是这么使用的,往里面塞东西就可以得到处理结果。
4.1开始创建函数
def fahrenheit_Converter(C):
fahrenheit = C * 9 / 5 + 32
return str(fahrenheit) + '°F'
C2F = fahrenheit_Converter(37)
print(C2F)
-
def开头,空格,函数的名称(你要干什么),括号里面是参数(你干什么时需要的东西),冒号要用英文书写,下一行4个空格后写怎么求出这个解,这个就是定义函数的过程
-
return后是告诉计算机给出这个函数的答案
-
定义完函数以后我想用这个函数怎么办,这个叫调用函数,像之前我们用过的print(),len(),input()……这些都是已经定义好的函数,我们使用的过程就是调用函数的过程
lyric_length = len('I cry out for magic!')
print(lyric_length)
上面我们定义了一个温度从摄氏度转换成华摄氏度的函数,调用看看有没有问题
C2F = fahrenheit_Converter(100)
print(C2F)
得到的结果是212.0°F,没有问题
练习题
一、初级难度:设计一个重量转换器,输入以“g”为单位的数字后返回换算成“kg”的结果。
我们来分析下这道题应该怎么做
- (要干什么)重量转换器,
- (干这个需要什么)需要g的数字
- (怎么把g变成kg)计算过程
- (答案)
def weigth_Converter(g):
kg = g / 1000
return str(kg) + 'kg'
g2kg = weigth_Converter(1000)
print(g2kg)
二、中级难度:设计一个求直角三角形斜边长的函数(两条直角边为参数,求最长边) 如果直角边边长分分别为3和4,那么返回的结果应该像这样:The right triangle third side's length is 5.0
- 函数名:求直角三角形斜边长
- 需要两条直角边的数字
- 勾股定理
- 返回答案 The right triangle third side's length is ?
- (这里用到了平方42和开平方4(1/2)我觉的这里用分数表示比小数表示合适,开3次方的时候用1/3就可以了)
def right_triangle_third_side_length(a, b):
c = (a ** 2 + b ** 2) ** (1 / 2)
return "The right triangle third side's length is " + str(c)
print(right_triangle_third_side_length(3, 4))
书上的答案
def g2kg(g):
return str(g / 1000) + 'kg'
print(g2kg(2000)) # 调用函数并打印结果
def Pythagorean_theorem(a, b):
return 'The right triangle third side\'s length is {}'.format((a ** 2 + b ** 2) ** (1 / 2))
print(Pythagorean_theorem(3, 4)) # 调用函数并打印结果
4.3 传递参数与参数类型
def trapezoid_area(base_up, base_down, height):
return (base_up + base_down) * height * 1 / 2
trapezoid_area(1, 2, 3) # 1,2,3分别对应的是base_up,base_down,height,这种叫位置参数
trapezoid_area(base_up=1, base_down=3, height=2) # 像这种叫做关键词参数
位置参数和关键词参数传入时可以混用,但只要有位置参数,参数的位置必须正确,关键词参数位置无所谓,这样说比较绕开,看看例子就清楚了
trapezoid_area(height=3, base_down=2, base_up=1) # RIGHT!
trapezoid_area(height=3, base_down=2, 1) # WRONG!,最后这个1的位置应该是height,但是height已经传参,会报错
trapezoid_area(base_up=1, base_down=2, 3) # RIGHT!
trapezoid_area(1, 2, height=3) # RIGHT!
给一个参数设定默认值非常简单,我们只需要在定义参数的时候给参数赋值即可
4.4 设计自己的函数
open的用法,只需要传入两个参数就可以正常运转了:文件的完整路径和名称,打开的方式
write的用法,在这里我们就照抄第三章的 replace 用法来学着使用 write 方法
file = open('/Users/su/Desktop/text.txt', 'w')
file.write('Hello World')
- 设计我们的第一个函数,需求是这样的:传入参数 name 与 msg 就可以在桌面写入文件名称和内容的函数text_create,并且如果当桌面上没有这个可以写入的文件时,就要创建一个之后再写入。
def text_create(name, msg):
desktop_path = '/Users/su/Desktop/'
full_path = desktop_path + name + ' .txt'
file = open(full_path, 'w')
file.write(msg)
file.close()
print('Done')
text_create('hello', 'hello world') #传入的参数为字符串
- 定义一个为函数 text_filter 的函数,传入参数 word,cencored_word 和 changed_word实现过滤,敏感词 cencored_word默认为‘lame’,替换词 changed_word 默认为‘Awesome’。
def text_filter(word, cencored_word='lame', changed_word='Awesome'):
return word.replace(cencored_word, changed_word)
print(text_filter('Python is lame!'))
- 把两个函数进行合并:创建一个名为 text_censored_create 的函数,功能是在桌面上创建一个文本,可以在其中输入文字, 但是如果信息中含有敏感词的话将会被默认过滤后写入文件。其中文本的文件名参数为 name,信息参数为 msg
def text_censored_create(name, msg):
def text_filter(msg, cencored_word='lame', changed_word='Awesome'):
new_msg = msg.replace(cencored_word, changed_word)
return new_msg
new_msg = text_filter(msg)
desktop_path = '/Users/su/Desktop/'
full_path = desktop_path + name + ' .txt'
file = open(full_path, 'w')
file.write(new_msg)
file.close()
print('Done')
text_censored_create('hello', 'Python is lame!')
先替换关键词,再写入
这里参数名称一样,但是函数不同,容易混淆
def text_create(name, msg):
desktop_path = '/Users/su/Desktop/'
full_path = desktop_path + name + ' .txt'
file = open(full_path, 'w')
file.write(msg)
file.close()
print('Done')
def text_filter(word, cencored_word='lame', changed_word='Awesome'):
return word.replace(cencored_word, changed_word)
def text_cencored_create(name, msg):
clean_msg = text_filter(msg)
text_create(name, clean_msg)
text_cencored_create('try', 'lame,lame')
网友评论