Python学习的第一阶段第五章:函数

Python学习——函数

目录

Python学习——函数

函数的定义

函数的参数

 练习:查体温

函数的返回值

函数返回值的定义

None类型

函数说明文档

函数的嵌套调用

变量的作用域

global关键字

函数综合案列:风筝ATM

功能描述

实现要求

代码


函数的定义

函数:实现特定功能的代码。

def 函数名 (传入参数):

    函数体

    return 返回值

调用方法:

函数名(参数)

注意:

  • 函数要先定义才能使用。
  • 参数不需要可以省略,但要有括号。
  • 返回值不需要也可以省略

函数的参数

传入参数:在函数进行计算时,接受外部(调用时)提供的数据。传入参数的数量不受限制。

对如下代码进行分析:

  • 函数定义中使用的x和y称为形式参数(形参),参数之间要用逗号隔开。
  • 函数调用中使用的3和4称为实际参数(实参),传入数据时,按照顺序传入数据,使用逗号隔开。

 练习:查体温

定义一个函数,接受参数传入,在函数内判断体温是否正常,超过37.5则为不正常。

产生一个35到40的随机浮点数代码:

 import random
 t = random.uniform(35, 40)

# 练习:自动查核酸
def check(x):
    if x <= 37.5:
        print("您的体温是:%.2f度,体温正常请进。" % x)
    else:
        print("您的体温是:%.2f度,不正常。" % x)
# 产生35到40的浮点数
import random
t = random.uniform(35, 40)
check(t)

函数的返回值

函数返回值的定义

返回值:程序中函数执行完事情后,给调用者的结果。这样的话,就可以将函数的返回值赋值给变量。

注意:函数体在遇到return后就结束执行,不会再执行return后面的代码。

None类型

函数即使没有return语句,依然有返回值。返回值是字面量:None,表示空的,无实际意义。不写return可以返回None,主动return None也可以。

应用场景:

  • 用在函数无返回值。
  • 用在if判断:在if判断中,None等同于False,一般用于函数中主动返回None,配合if判断做相应的处理。8
  • 用于声明无内容的变量:定义暂时不需要具体值的变量,可以用None代替。例如:name = None。
def check_age(age):
    if age >= 18:
        return "success"
    else:
        return None

result = check_age(16)
if not result:
    # 表明如果成功进入if则result为None,即相当于False
    print("未成年,不能进入网吧")

函数说明文档

通过多行注释,对函数进行解释,辅助理解函数的作用。

语法定义举例:

def func (x, y):

    """

    函数整体说明

    :param x:形参x的说明

    :param y:形参y的说明

    :return:返回值的说明

    """

    函数体

    return 返回值

对函数进行注释说明之后,在之后使用给函数的时候,可以选中该函数,鼠标悬停就会弹出函数的说明文档,便于理解调用。

如下图所展示一般:

 

函数的嵌套调用

在一个函数里面再调用另外一个函数。

函数A中调用函数B,函数A执行到调用函数B的语句,会将函数B全部执行完之后,再继续执行函数A的剩余内容。

变量的作用域

函数体内部的变量为局部变量,只在函数体内部生效,临时保存数据。

将变量定义在函数的外边,即为全局变量,可以在函数内外使用。如果在函数体内部修改全局变量,只在函数体内部有影响(此时相当于局部变量),并不影响函数体外边该全局变量的值。而如果想要在函数体内部修改的全局变量的结果可以用于函数体外,则需要关键字global来声明。

global关键字

global关键字可以在函数内部声明变量为全局变量。

# 函数演示
num = 200
def test_b():
    num = 100
    print(f"text_a:{num}")
test_b()
print(num)

# 在函数体内修改变量为全局变量
num = 200
def test_a():
    global num   # 设置num为全局变量
    num = 100
    print(f"text_a:{num}")
test_a()
print(num)

函数综合案列:风筝ATM

功能描述

1.主菜单效果

  • ----------主菜单---------
  • “顾客名称”,您好,欢迎来到风筝银行ATM。请选择操作:
  • 查询余额    【1】
  • 存款            【2】
  • 取款             【3】
  • 退出            【4】
  • 请输入您的选择:

2.查询余额效果

  • -----------查询余额----------
  • “顾客名称”,您好,您的余额剩余:5000000元。

3.存、取款效果

  • ---------存款---------
  • “顾客名称”,您好,您存款:50000元。
  • “顾客名称”,您好,您的余额剩余:5050000元。
  • ---------取款---------
  • “顾客名称”,您好,您取款:50000元。
  • “顾客名称”,您好,您的余额剩余:4950000元。

实现要求

1.定义全局变量money和name.

2.定义如下函数:

  • 查询余额函数
  • 存款函数
  • 取款函数
  • 主菜单函数

3.要求:

  • 程序启动后输入客户姓名
  • 查询余额、存款、取款后都会返回主菜单
  • 存款、取款后,显示当前余额
  • 客户选择退出或输入错误,程序会退出,否则一直运行

4.附加要求:

  • 取款金额超出存款金额,提示失败

代码

代码版本1:老师写的代码:

money = 500000
name = input("请输入您的名字:")
# 主菜单函数定义
def main():
    """
    主页面函数
    :return: 返回操作值
    """
    print("-------主菜单-------")
    print(f"{name},您好,欢迎来到风筝银行ATM。请选择操作:")
    print("查询余额\t【1】\n存款\t\t【2】\n取款\t\t【3】\n退出\t\t【4】")
    num = int(input("请输入您的选择:"))
    return num

def check(flag):
    if flag == True:
        print("-------查询余额-------")
    print(f"{name},您好,您的余额剩余:{money}元")

def saving(num):
    global money
    money += num
    print(f"{name},您好,您存款{num}元成功")
    check(False)

def get_money(num):
    global money
    if num > money:
        print("存款金额不足,操作失败。")
    else:
        money -= num
        print(f"{name},您好,您取款{num}元成功")
    check(False)

while True:
    key_board = main()
    if key_board == 1:
        check(True)
        continue
    elif key_board == 2:
        num = int(input("请输入您的存款金额:"))
        saving(num)
        continue
    elif key_board == 3:
        num = int(input("请输入您的取款金额:"))
        get_money(num)
        continue
    else:
        print("退出程序。")
        break

代码版本1:自己写的代码:

  • 函数名称不规范,偏中文。
  • 函数体过于复杂,对与函数调用仍然不熟练。
money = 500000
name = input("请输入您的名字:")
def zhu():
    print("-------主菜单-------")
    print(f"{name},您好,欢迎来到风筝银行ATM。请选择操作:")
    print("查询余额\t【1】\n存款\t\t【2】\n取款\t\t【3】\n退出\t\t【4】")
    num = int(input("请输入您的选择:"))
    if num == 1:
        cha()
    elif num == 2:
        cun()
    elif num == 3:
        qu()
    else:
        return None

def cha():
    print("-------查询余额-------")
    print(f"{name},您好,您的余额剩余:{money}元")
    if int(input("输入数字1返回主菜单:")) == 1:
        zhu()


def qu():
    print("-------取款-------")
    money_qu = int(input(f"{name},您好,您取款:"))
    global money
    money -= money_qu
    print(f"{name},您好,您的余额剩余:{money}元")
    if int(input("输入数字1返回主菜单:")) == 1:
        zhu()
def cun():
    print("-------存款-------")
    money_cun = int(input(f"{name},您好,您存款:"))
    global money
    money += money_cun
    print(f"{name},您好,您的余额剩余:{money}元")
    if int(input("输入数字1返回主菜单:")) == 1:
        zhu()

while True:
    if zhu() == None:
        print("程序退出。")
        break
    zhu()
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值