python学习第9节:函数的概念和应用

发布时间:2020/07/08 作者:天马行空 阅读(1349)

函数基础
Python中,函数(Function)是一段组织好的、可重复使用的、可以做某一件事的代码。
输入的数据,它在函数中被称作参数。参数指向的是函数要接收、处理怎样的数据。

一、自定义函数

自定义函数就是用户使用def定义的函数。参数是可选项,也就是说一个函数,可以没有参数,可以有一个参数,也可以有多个参数。

图片.png

#函数名:最好是取体现函数功能的名字,一般用小写字母和单下划线、数字等组合
    def intro(name):
    #参数:根据函数功能,括号里可以有多个参数,也可以不带参数,命名规则与函数名相同
    #规范:括号是英文括号,后面的冒号不能丢
        print("My name is {}.".format(name))
    #函数体:函数体就是体现函数功能的语句,要缩进,一般是四个空格


调用函数

函数调用的语法为:

图片.png

def intro(name):
    print("My name is {}.".format(name))
intro("Angelababy")
intro("Kris")


有返回值的函数

使用return返回某些结果,然后在调用函数时把这些结果赋值给几个变量。

图片.png

def circle(r):
    pi = 3.14159
    area = pi * r ** 2
    return area
my_area = circle(10)
print("半径为10的圆的面积是{}".format(my_area))



变量作用域

一个变量的作用域就是指这个变量能够被正常使用的代码范围。

局部变量:函数内部使用的变量,叫局部变量,函数内定义的变量在函数外不起作用。

全局变量:在所有函数之外赋值的、可以在程序的任何位置使用的变量,叫做全局变量。在函数外面定义的变量可以在函数里使用,但要注意把变量定义在使用变量或者调用使用它的函数之前。

# 定义一个全局变量
string = '我是全局变量'
# 定义一个测试函数
def test():
    # 定义一个同名局部变量并打印
    string = '我是局部变量'
    print (string)
# 调用测试函数完成打印局部变量的任务
test()
# 打印全局变量
print(string)

虽然局部变量和全局变量都叫string,但其实他们互无影响,全局变量不会因为函数中的赋值而发生改变。

使用global关键字可以把局部变量变成全局变量。

string = 'test'
def test():
    global string
    string = 'test1'
    print (string)
test()
print (string)


图片.png


二、内建函数

内建函数就是Python自带的函数,对于这些函数,我们只需要知道它能接收哪些参数,实现了什么功能就可以了。

图片.png


图片.png

对价格进行排序,并找出其中最高和最低的价格

price_list = [299, 13140, 199, 399, 899, 5200]
sorted_list = sorted(price_list) #sorted第二个参数默认是false升序,true为降序
max_price = max(price_list)
min_price = min(price_list)
print("课程价格从低到高为:{}".format(sorted_list))
print("课程中,最贵的价格是:{}".format(max_price))
print("课程中,最便宜的价格是:{}".format(min_price))


图片.png


实例1:累加加函数

def calculate_sum(number):
    a = 0
    for i in range(number+1):
        a = a + i
    return a
# 补充以下四行代码,分别求100以内的累加和和200以内的累加和,并分别打印出。
print(calculate_sum(100))
print(calculate_sum(200))


实例2:不重复的三位数

def test(low, high):
    count = 0
    for i in range(low, high + 1):
        for j in range(low, high + 1):
            for k in range(low, high + 1):
                if i != j and i != k and j != k:
                    print(i * 100 + j * 10 + k)
                    count += 1
    print("一共有{}个三位数".format(count))
test(1,3)
test(3,8)



实例3:猜数字游戏

def guess_number(true_number, low_number, high_number):
    i = 1
    while i <= 5:
        guess_number = int(input("数字的范围是{}-{},现在第{}次猜测:" .format(low_number, high_number, i)))
        if true_number == guess_number:
            print("恭喜你猜对啦!")
            break
        # 请你补全以下四行代码
        elif guess_number<true_number and guess_number>low_number:
            low_number = guess_number
        elif guess_number>true_number and guess_number<high_number:
            high_number = guess_number
        i = i + 1
        if i > 5:
            print("很遗憾,你五次都没有猜对。正确数字是{}。" .format(true_number))


true_number = int(input("请主持人输入数字:"))
low_number = int(input("请主持人输入范围下限:"))
high_number = int(input("请主持人输入范围上限:"))

guess_number(true_number, low_number, high_number)


实例4:nn乘法表

def multiple_table(n):
    # 补充下面一行代码,完成for的第一层循环
    for i in range(1, n + 1):
        for j in range(i, n + 1):
            print("{}x{}={}".format(i, j, i * j), end="\t")
        print("\n")
# 九九乘法表
multiple_table(9)
# 五五乘法表
multiple_table(5)


实例5:求解所有素数

def find_number(low, high):
    for i in range(low, high+1):
        flag = 0
        for j in range(2, i):
            if i % j == 0:
                flag = 1
                break
        if flag == 0:
            print(i)
find_number(101, 200)


实例6:保存帐号密码

# 检测用户名是否符合要求的函数
def uncheck(username):
    if username == '':
        return False
    else:
        return True

#请补全代码
# 检测密码是否符合要求的函数
def pwcheck(password):
    if len(password)>=6:
        return True
    else:
        return False

#请补全代码
# 第三步 保存函数
def save(username, password):
    global accounts
    accounts[username] = password

#请补全代码
# 创建一个空字典用来保存用户名和密码
accounts = {}
# 现在试着保存三个账户名和密码
for i in range(3):
#请补全代码
    username = input('请输入用户名:')
    password = input('请输入密码:')
    if uncheck(username) and pwcheck(password):
        save(username,password)
        print('账号创建成功!')
    else:
        print('账号创建失败。')
        
print('帐号字典:{}'.format(accounts))


实例7:登陆帐户

# 定义登录函数
def login(account_dict, number):
    count = 0
    while True:
        count+=1
        if count>number:
            print('机会已经用完,非法闯入!')
            break
        
        username = input('请输入用户名:')
        password = input('请输入密码:')
        
        if username in account_dict and account_dict[username]==password:
            print('登陆成功')
            break
        
        if username not in account_dict:
            print('用户不存在')
        else:
            if account_dict[username] != password:
                print('密码错误')
                
accounts = {'阿里巴巴': '芝麻开门',
            '恶毒皇后': '魔镜魔镜告诉我',
            '阿拉丁': '神灯飞毯'}
#调用登录函数
login(accounts, 3)


总结:

函数:一段组织好的、可重复使用的、可以做某一件事的代码。有返回值的函数,也有实现功能的函数。
参数:定义函数时在括号中声明,调用函数时在括号中传入数据或者变量。
变量作用域:变量在程序中起作用的范围。
局部变量:在函数中定义的,只在函数中起作用的变量。
全局变量:一旦定义,在整个程序中都可以起作用的变量。
图片.png

关键字python python教程