思维导图
代码
1. 函数的初体验
name = "itheima"
length = len(name)
print(length)
运行结果:
不使用内置函数len(),完成字符串长度的计算。
str1 = "itheima"
str2 = "itcast"
str3 = "python"
count = 0
for i in str1:
count += 1
print("字符串1的长度是:%d" % count)
count = 0
for i in str2:
count += 1
print("字符串2的长度是:%d" % count)
count = 0
for i in str3:
count += 1
print("字符串3的长度是:%d" % count)
运行结果:
简化版:使用函数优化
str1 = "itheima"
str2 = "itcast"
str3 = "python"
def my_len(data):
count = 0
for i in data:
count += 1
print("该字符串的长度是:%d" % count)
my_len(str1)
my_len(str2)
my_len(str3)
运行结果:
2. 函数的基础定义语法
def say_hi():
print("Hi 我是黑马程序员,学python来黑马。")
say_hi()
运行结果:
3. 函数基础定义练习案例
· 练习:自动查核酸
定义一个函数,函数名任意,要求调用函数后可以输出如下欢迎语:
欢迎来到黑马程序员!
请出示您的健康码以及72小时核酸证明!
def welcome():
print("欢迎来到黑马程序员!")
print("请出示您的健康码以及72小时核酸证明!")
welcome()
运行结果:
4. 函数的传入参数
def add():
result = 1 + 2
print("1+2的结果是:%d" % result)
运行结果:
缺点:功能局限,只能计算1+2
能否扩展成:实现两个数的加法运算?传参
def add(x, y):
result = x + y
print("%d+%d的结果是:%d" % (x,y,result))
add(4,8)
运行结果:
5. 函数的参数练习案例
· 练习:升级版自动查核酸
定义一个函数,名字任意,并接受一个参数传入(数字类型,表示体温)
在函数内进行体温判断(正常范围:小于等于37.5度),并输出如下内容:
欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!
体温测量中,您的体温是:37.3度,体温正常请进!
欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!
体温测量中,您的体温是:39.3度,需要隔离!
def check(tem):
print("欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!")
if tem <= 37.5:
print("体温测量中,您的体温是:%.1f度,体温正常请进!" % tem)
else:
print("体温测量中,您的体温是:%.1f度,需要隔离!" % tem)
check(37.3)
运行结果:
def check(tem):
print("欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!")
if tem <= 37.5:
print("体温测量中,您的体温是:%.1f度,体温正常请进!" % tem)
else:
print("体温测量中,您的体温是:%.1f度,需要隔离!" % tem)
check(39.3)
运行结果:
6. 函数的返回值定义语法
def add(a, b):
result = a + b
return result
r = add(1, 2)
print("1+2的结果是:%d" % r)
运行结果:
7. 函数返回值之None类型
def say_hello():
print("Hello")
result = say_hello()
print(result)
print(type(result))
运行结果:
def say_hello():
print("Hello")
return None
result = say_hello()
print(result)
print(type(result))
运行结果:
def check_age(age):
if age >= 18:
return "success"
return None
result = check_age(5)
if not result:
print("未成年禁止入内!")
运行结果:
8. 函数的说明文档
def add(x, y):
"""
:param x:参数x的说明
:param y:参数y的说明
:return:返回值的说明
"""
result = x + y
print("2数相加的结果是:%d" % result)
return result
9. 函数的嵌套调用
def func_b():
print("---2---")
def func_a():
print("---1---")
func_b()
print("---3---")
func_a()
运行结果:
10. 变量在函数中的作用域
def testA():
num = 100
print(num)
testA()
# 报错,找不到num
# print(num)
运行结果:
num = 100
def testA():
print(num)
def testB():
print(num)
testA()
testB()
运行结果:
num = 100
def testA():
print(num)
def testB():
global num
num = 200
print(num)
testA()
testB()
print(num)
结果:
11. 函数综合案例
· 练习:黑马ATM
· 主菜单效果:
· 查询余额效果:
· 存、取款效果:
要求如下:
· 定义一个全局变量:money,用来记录银行卡余额(默认5000000)
· 定义一个全局变量:name,用来记录客户姓名(启动程序时输入)
· 定义如下的函数:
· 查询余额函数
· 存款函数
· 取款函数
· 主菜单函数
· 程序启动后输入客户姓名
· 查询余额、存款、取款后都会返回主菜单
· 存款、取款后,都应显示一下当前余额
· 客户选择退出或输入错误,程序会退出,否则一直运行
money = 5000000
name = str(input("请输入您的姓名:"))
def menu():
print("----------------------主菜单----------------------")
print("%s,您好,欢迎来到黑马银行ATM。请选择操作:" % name)
print("查询余额\t【输入1】")
print("存款\t\t【输入2】")
print("取款\t\t【输入3】")
print("退出\t\t【输入4】")
choice = int(input("请输入您的选择:"))
if choice == 1:
print()
return rest()
elif choice == 2:
print()
return save()
elif choice == 3:
print()
return get()
elif choice == 4:
print("谢谢使用,再见!")
print()
return
else:
print("输入错误,请重新输入!")
print()
return menu()
def rest():
print("----------------------查询余额----------------------")
print("%s,您好,您的余额剩余:%d元" % (name,money))
print()
return menu()
def save():
print("----------------------存款----------------------")
save_money = int(input("请输入您要存入的金额:"))
global money
money += save_money
print("%s,您好,您存款%d元成功" % (name,save_money))
print("%s,您好,您的余额剩余:%d元" % (name,money))
print()
return menu()
def get():
print("----------------------取款----------------------")
get_money = int(input("请输入您要取出的金额:"))
global money
if get_money > money:
print("%s,您好,您的余额不足,无法取款!" % name)
print()
else:
money -= get_money
print("%s,您好,您取款%d元成功" % (name,get_money))
print("%s,您好,您的余额剩余:%d元" % (name,money))
print()
return menu()
menu()
运行结果: