学习python第八课-函数上

函数上

1. 函数简介

  • 函数也是一个对象

  • 函数用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次调用

    语法
    def 函数名([形参1,形参2,形参3......]):
        代码块
    
  • 函数中保存的代码不会立即执行,需要调用函数的时候代码才会执行

    注意:

    函数名必须符合标识符的规范(可以包含字⺟、数字、下划线但是不能以数字开头)
    print是函数对象 print()是调⽤函数

2. 函数的参数

2.1 形参和实参

  • 形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值
  • 实参(实际参数)指定了形参,那么在调⽤函数时必须传递实参,实参将会赋值给对应的形参,简单来说有⼏个形参就要有⼏个实参

2.2 函数的传递方式

  • 定义形参时,可以为形参指定默认值。指定了默认值以后,如果⽤户传递了参数则默认值不会⽣效。如果⽤户没有传递,则默认值就会⽣效

  • 位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参

    def fun(a, b ,c):
        print(a)
        print(b)
        print(c)
    fun(1,2,3)
    >>> 1
    >>> 2
    >>> 3
    
  • 关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,⽽根据参数名进⾏传递

    def fun(a, b ,c):
        print(a)
        print(b)
        print(c)
    fun(a=1,c=3,b=2)
    >>> 1
    >>> 2
    >>> 3
    
  • 混合使⽤位置参数和关键字参数的时候必须将位置参数写到关键字参数前⾯去

    def fun(a, b ,c):
        print(a)
        print(b)
        print(c)
    print(1,c=3,b=2)
    >>> 1
    >>> 2
    >>> 3
    

3. 不定长参数

  • 定义函数时,可以在形参前⾯加⼀个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到⼀个元组中
  • 带*号的形参只能有⼀个,可以和其他参数配合使⽤,位置参数一定要放到前面,关键字参数要放到后面去(位置参数,* 参数, 关键字参数)
  • *形参只能接受位置参数,不能接受关键字参数
  • **形参可以接收其他的关键字参数,它会将这些参数统⼀保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
  • **形参只有⼀个,并且必须写在所有参数的后⾯

4. 参数的解包

  • 传递实参时,也可以在序列类型的参数前添加星号,这样它会⾃动的将序列中元素依次作为参数传递
  • 要求序列中的元素的个数必须和形参的个数⼀致

作业

第一题 打印名片程序

#第一题 打印名片程序:输入姓名,电话号码,性别,最后打印出来名片
# 控制姓名长度为6-20,电话号码长度11,性别只能允许男或女,每一样信息不允许为空
#性别输入函数
def genders(name, photo):
    gender = input('请输入性别,只能是男或女:')
    if len(gender)>0 and (gender=='男' or gender=='女'):
        return {'姓  名': name, '电话号码': photo, '性  别': gender}
    else:
        print('请输入正确的性别!')
        genders(name, photo)

#电话号码输入函数
def telePhone(name):
    photo = input('请输入电话号码:')
    if len(photo)==11 and photo.isdigit() and ' ' not in photo:
        return genders(name, photo)
    else:
        print('电话号码长度只能为11位!')
        telePhone(name)

#姓名输入函数
def userName():
    name = input('请输入姓名:')
    if len(name) >= 6 and len(name) <=20 and  ' ' not in name:
        return telePhone(name)
    else:
        print('姓名长度为6-20!')
        userName()


#主函数
def bCard():
    for i in userName().items():
        print(i[0],':',i[1])


bCard()

运行结果为:
在这里插入图片描述

第二题 使用函数求前20个斐波那契数列斐波那契数列

#第二题 使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21..即:起始两项均为1,此后的项分别为前两项之和
def fibs(counts):
    i, j, k = 1, 1, 0
    while k < counts:
        print(i, end=' ')
        i, j = j, i+j
        k += 1
    print()

fibs(20)

运行结果为:
在这里插入图片描述

第三题 求1-100之间所有整数的和

#第三题 编写一段代码,定义一个函数求1-100之间所有整数的和,并调用该函数打印出结果
def addTo100():
    i, j = 0, 0
    while i <= 100:
        i, j = i+1, j+i
    print(j)

addTo100()

运行结果为:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值