2018-07-24 day07
2018-07-24 本文已影响0人
Kris_Shin
函数
1. 函数: 就是对实现某一特定功能的代码块的封装
2. 作用: 1.封装(将功能绑定在一个函数中,想要使用这个功能的时候覅用这个函数)
3.声明一个函数
def 函数名(参数列表):
函数说明
函数体
-
def: 是python中声明函数的关键字
-
函数说明: 对函数的功能和参数以及返回值进行说明
-
函数名: 标识符.pep8.见名知意(不可用无意义的命名方式,大概函数的功能)
-
(): 固定格式
-
参数列表: (形参列表)参数名1,参数名2...参数的功能是用来接收从外部传到函数内部的数据
-
函数体: 实现函数功能的代码块,可能回包含一个return语句
4. 初学者声明函数的步骤:
-
a.确定函数的功能
-
b.确定函数名
-
c.确定参数
i确定需不需要参数
ii确定需要几个参数
(看实现函数的功能需不需要从外部传数据到函数体)
-
d.实现函数功能
-
e.确定返回值
注意:函数只有在调用的时候才会执行
5. 函数的调用
-
函数名(实参列表)
-
函数名: 调用的函数一定是已经声明过的,调用相同函数名的函数
-
实参列表: 实参是用来给形参赋值的
-
函数的调用过程:
0.回到函数声明的位置
1.使用实参给形参赋值
2.执行函数体
3.函数体执行完毕后,回到函数调用的位置
注意
-
1.函数只有在调用才会执行
-
2.函数调用的时候一定要保证每个形参都有值
-
3.一个函数可以调用多次
写一个函数,计算两个数的和
函数的调用一定要写在函数的声明后
def addNum(n1, n2):
求两个数的和
:param n1:提供第一个数,int
:param n2:提供第二个数,int
:return:对返回值进行说明
return n1 + n2
# 函数的调用一定要写在函数的声明后
print(addNum(1, 5))
case1: 声明一个函数,功能打印10个星号,调用这个函数
def printStar():
print('*' * 10)
printStar()
函数的参数
- 参数的作用: 从函数的外面给函数传值
1.位置参数
传参的时候,实参与形参位置一一对应
def fun1(a, b, c):
print(a, b, c)
fun1(1, 22, 4)
2.关键字参数
- 调用函数的时候:
- 函数名(参数=值)
fun1(c=32, a=6, b=5)
3.参数的默认值
- python中函数声明的时候参数可以设置默认值,有默认值的参数必须放在参数列表的最后
调用有默认值的函数,有默认值的参数可以不传参
def fun2(a, b=1, c=59):
print(a, b, c)
fun2(3, 5)
fun2(1, 2, 3)
4.参数个数不定
- 参数个数不确定的时候,在形参前加*,将形参变成元组
调用的时候,这个参数会将对应的实参作为元组的元素来保存
写一个函数,求多个数的和
-
注意参数个数不定,可以是形参中的一部分是不定的
-
不定长参数只能放到最后,可以不传参
-
说名:位置参数和关键字参数可以混用
def mySum(*num):
sum1 = 0
for i in num:
sum1 += i
print(num)
# 注意参数个数不定,可以是形参中的一部分是不定的
# 不定长参数只能放到最后,可以不传参
def fun3(a, *b):
print(a, b)
fun3('a', 1, 3, 5, 6, 7, 'a')
# 说名:位置参数和关键字参数可以混用
fun2(3, c=2)
作业
1.编写一个函数,求1+2+3+...N
'''
@Author: Kris Shin
@Date: 2018-07-24 17:02:44
@Last Modified by: Kris Shin
@Last Modified time: 2018-07-24 17:02:44
'''
def getSum(*num):
'''
type num:int/float
rtype: int/float
'''
n = 0 # 存储结果
for n in num: # 遍历元组
n += num
return n
2.编写一个函数,求多个数最大值
def getMax(*num):
'''
type num:int/float
rtype: int/float
'''
maxNum = num[0] # 取元组第一个值
for i in num:
if maxNum < i:
maxNum = i
return maxNum
3.编写一个函数,实现摇骰子功能,打印n个骰子的点数和
import random # 产生骰子点数
def getDicesPot(n):
'''
type num:int
rtype: int
'''
sum1 = 0
for _ in range(n):
sum1 += random.randint(1, 6) # 随机产生1-6的点数,再求和
return n,sum1
4.编写一个函数,交换指定字典的key和value
-
例:{'a':1,'b':2,'c':3}→{1:'a',2:'b',3:'c'}
def switchDict(dict1):
'''
type dict1:dict
rtype: dict
'''
dict2 = {} # 定义一个空字典用来存储交换后的结果
for key, value in dict1.items(): # 遍历取出key和value
dict2[value] = key # 交换key和value给新字典
return dict2
5.编写一个函数,求三个数的最大值
def getTriMax(num1, num2, num3):
'''
type num1:int/float
type num2:int/float
type num3:int/float
rtype: int/float
'''
if num1 >= num2 and num1 >= num3:
return num1
elif num2 >= num1 and num2 >= num3:
return num2
else:
return num3
6.编写一个函数,提取指定字符串中的所有字母,然后拼接在一起后打印出来
-
例:'12a&bc12d--'→打印'abcd'
def getAlpha(str1):
'''
type str1:str
rtype: str
'''
result = '' # 存储结果
for i in str1:
if i.isalpha(): # 调用函数判断i是不是字母也可以用if 'a'<i<'z' or 'A'<i<'Z':
result += i
return result
7.编写一个函数,求多个数的平均值
def getAvg(*num):
'''
type num:int/float
rtype: int/float
'''
sum1 = 0
for i in sum1:
sum1 += i # 求和
return sum1 / len(num) # 除以长度
8.编写一个函数,默认求10的阶乘,也可计算其他阶乘
def getFactorial(n=10):
'''
type num:int
rtype: int
'''
result = 1
for i in range(1, n + 1): # 从1乘到数本身,得到阶乘
result *= i
return result
9.编写一个函数,可以对多个数进行不同的运算
-
例:operation('+', 1,2,3) --->求1+2+3的结果
-
operation( '-',10,9) --->求10-9的结果
-
operation( '',2,4,8,10) --->求24* 8* 10的结构
def operaNums(operation, *num): # 操作符和数字分开
'''
type operation:str
type num:int/float
rtype: int/float
'''
result = 0
if operation == '+': # 判断操作符
temp = 0
for i in num:
temp += i
result = temp
elif operation == '-':
result = num[0] - num[1]
elif operation == '*':
temp = 1
for i in num:
temp *= i
result = temp
elif operation == '/':
if num[1] != 0: # 排除除0报错
result = num[0] / num[1]
return result
测试输出结果
print(operaNums('-', 1, 2)) # 测试代码返回结果是否正常