千锋的第七天

一、函数的作用

1、当同一个功能的代码需要重复写多次的时候
2、当功能发生改变,需要修改多个地方的时候

二、函数的定义

1、函数就是对某一特定功能的代码进行封装
2、函数的作用:主要是封装的作用(将特定的功能绑定在一个函数中,当需要用到这个功能的时候,调用函数就可以实现)
3、声明函数
def 函数名(参数):
函数体
def:关键字
函数名:标识符,PEP8的命名规则
参数:用来接收从外部传导到函数内部的数据
函数体:实现函数功能的代码块
4.初学者声明函数的步骤:
a.确定函数的功能
b.确定函数名
c.确定参数
确定需不需要参数
确定需要几个参数
(看实现函数的功能需不需要从外面传数据到函数里面)
d.实现函数的功能
e.确定返回值
5.函数的调用
函数名(实参列表)
函数名:调用的函数一定是已经声明过的,想要使用什么功能就调用对应的函数
实参列表:实参是用来给形参赋值的
重点--------函数的调用过程:
0.回到函数声明的地方
1.使用实参给形参赋值
2.执行函数体
3.函数体执行完成后,回到函数调用的位置,再执行后面的代码

注意:
1.函数只有在调用的时候才会执行
2.函数调用的时候一定要保证每个形参都有值
3.一个函数可以调用多次

三、函数的参数

1、位置参数:传参的时候实参按位置的顺序给形参赋值
2、关键字参数:用关键字调用函数的时候,参数的顺序可以打乱,如

def func1(a, b, c):
    print(a, b, c)
func1(c=20, b=10, a=80)
结果:80 10 20

3、参数的默认值
在声明函数的时候,参数可以有默认值,但是有默认值的参数在声明的时候必须放在形参的最后面,否则会报错。
在调用函数有默认值参数的时候,有默认值的参数可以传参也可以不传参。

def func1(a, b, c=10):
    print(a, b, c)
func1(10,20)
func1(10,20,30)
结果:10 20 10
10 20 30

4、参数个数不定
参数的个数不确定的时候,就在声明函数的时候,形参的前面加一个*,将形参变成元组
调用函数的时候,这个参数会将对应的实参作为元组的元素保存起来

def func1(*x):
    print(x)
func1(1,2,3,4,5,6)
结果:(1, 2, 3, 4, 5, 6)

def func1(*x,y):#参数个数不定的时候,个数不定的参数只能放到形参的最后
    print(x,y)
func1(1,2,3,4,5,6)
结果:1 (2, 3, 4, 5, 6)
  File "C:/Users/VM590/Desktop/Python/我的程序/day7-学生管理系统/练习.py", line 15, in 
    func1(1,2,3,4,5,6)
TypeError: func1() missing 1 required keyword-only argument: 'y'

作业

1.编写一个函数,求1+2+3+....+N

def my_sum():
    sum1 = 0
    number = int(input('请输入一个N值:'))
    for i in range(1,number+1):
        sum1 += i
    print(sum1)
my_sum()
结果:请输入一个N值:89
4005

2.编写一个函数,求多个数中的最大值

def max1(*x):
    print(max(x))#元组也可以用max实现求其中的最大值
max1(1,2,58,96,74,52,34)
结果:96

3.编写一个函数,实现摇色子的功能,打印n个色子的点数和

法1:
def my_sum():
    number = int(input('请输入色字的个数:'))
    count = 0
    list1 = []
    sum1 = 0
    while True:
        count += 1
        import random
        n = random.randint(1,6)#random函数会包括结束下标的数字,比如该题是产生1~6之间的随机数字(包括6)
        list1.append(n)
        if count == number:
            for i in  list1:
                sum1 += i
            print(sum1)
            break
my_sum()
结果:请输入色字的个数:5
15
法2:
def sum1(x):#x代表色子的个数
    sum1 = 0
    count = 0
    while True:
        count += 1
        import random
        n = random.randint(1,6)
        sum1 += n
        if count == x:
            break
    print(sum1)
sum1(50)
结果:188
法3
def my_sum():
    number = int(input('请输入N值:'))
    sum1 = 0
    for item in range(1,number+1):
        import random
        n = random.randint(1,6)
        print(n)
        sum1 += n
    print('和:',sum1)
my_sum()
结果:请输入N值:5
4
1
4
5
1
和: 15

4.编写一个函数,交换指定字典的key和value。

法1:
dict1 = {'name':'张三','age':18,'weight':50,'hight':1.7}
def change_key_value(dict1):
    print(dict((key,value) for value,key in dict1.items()))
change_key_value({'name':'张三','age':18,'weight':50,'hight':1.7})
结果:{'张三': 'name', 18: 'age', 50: 'weight', 1.7: 'hight'}
法2
dict1 = {'name':'张三','age':18,'weight':50,'hight':1.7}
def change_key_value(dict1):#dict1表示一个字典,任何字典都可以
    list2 = []
    for key,value in dict1.items():
        list1 = [value,key]
        list2.append(list1)
    dict2 = dict(list2)         #将列表转化成字典
    print(dict2)
change_key_value(dict1)
结果:{'张三': 'name', 18: 'age', 50: 'weight', 1.7: 'hight'}
法3
dict1 = {'name':'张三','age':18,'weight':50,'hight':1.7}
def change_key_value(dict1):
    dict2 = {}
    for key,value in dict1.items():
        dict2[value] = key
    print(dict2)
change_key_value(dict1)
结果:{'张三': 'name', 18: 'age', 50: 'weight', 1.7: 'hight'}

5.编写一个函数,三个数中的最大值

def max1(x,y,z):
    print(max(x,y,z))
max1(10,8,15)
结果:15

6.编写一个函数,提取指定字符串中的所有的字母,然后拼接在一起后打印出来

def print_str():
    str1 = input('请随便输入一串字符:')
    str2 =''
    for i in str1:
        if 'a'<=i<='z' or 'A'<=i<='Z':
            str2 += i
    print(str2)
print_str()
结果:请随便输入一串字符:jjk1457ADJJHGJ8315&&^%$#@**&&
jjkADJJHGJ

7.写一个函数,求多个数的平均值

def average(*number):
    sum1 = 0
    count = 0
    for x in number:
        count += 1
        sum1 += x
    print('平均数:',sum1/count)
average(10,20,30)
结果:平均数: 20.0

8.写一个函数,默认求10的阶层,也可以求其他数的阶层

def hierarchy(x):
    mul1 = 1
    for i in range(1,x+1):
        mul1 *= i
    print(mul1)
hierarchy(10)
结果:3628800

9.写一个函数,可以对多个数进行不同的运算

例如: operation('+', 1,2,3) --->求1+2+3的结果

operation( '-',10,9) --->求10-9的结果

operation( '',2,4,8,10) --->求24* 8* 10的结构

def operation(option,*number):
    if option == '+':
        sum1 = 0
        for item in number:
            sum1 += item
        print(sum1)
    if option == '-':
        diff = 0
        for item in number:
            diff -= item
        print(diff)
    if option == '*':
        mul1 = 1
        for item in number:
            mul1 *= item
        print(mul1)
operation('*',10,25,89,14)
结果:311500

你可能感兴趣的:(千锋的第七天)