一、返回值
#使用return语句输出返回值,语法为return(value),可以返回一个值,也可以返回多个值
#例:某商场打折促销活动,金额500~1000打九折,1000~2000打八折,2000~3000打七折,高于3000打六折
def f1(money):
'''功能:计算商品金额并计算折扣结果
money:保存商品金额列表
返回值:商品的合计金额和折扣后的金额
'''
moneyold = sum(money)#计算合计金额
moneynew = moneyold
if 500 <= moneyold < 1000: #享受9折优惠
moneynew = '{:.2f}'.format(moneyold*0.9)
elif 1000 <= moneyold < 2000: #享受8折优惠
moneynew = '{:.2f}'.format(moneyold*0.8)
elif 2000 <= moneyold < 3000: #享受7折优惠
moneynew = '{:.2f}'.format(moneyold*0.7)
elif moneyold >= 3000: #享受6折优惠
moneynew = '{:.2f}'.format(moneyold*0.6)
return moneyold,moneynew #返回总金额和折扣后的金额
#调用函数
print("\n开始结算====\n")
listmoney = []
while True :
inmoney = float(input("请输入商品金额(输入0表示输入完毕):"))
if int(inmoney) == 0:
break #退出循环
else :
listmoney.append(inmoney)
money = f1(listmoney)#调用函数
print("合计金额:",money[0],"应付金额:",money[1])
开始结算====
请输入商品金额(输入0表示输入完毕):465
请输入商品金额(输入0表示输入完毕):789
请输入商品金额(输入0表示输入完毕):1598
请输入商品金额(输入0表示输入完毕):2689
请输入商品金额(输入0表示输入完毕):4367
请输入商品金额(输入0表示输入完毕):0
合计金额: 9908.0 应付金额: 5944.80
二、变量的作用域
#指代码能够访问的区域,超出范围,将不能访问,根据作用范围,分为局部变量和全局变量,函数体内的一般为局部变量,也可以定义成全局变量
def f2():
a1 = "人生得意须尽欢,莫使金樽空对月!" #定义局部变量a1
print("局部变量a1=",a1) #输出局部变量的值 #函数体内可以正常输出结果
f2() #调用函数
print("局部变量a1=",a1) #函数体外输出局部变量的值 #输出结果报错,a1没有定义#
局部变量a1= 人生得意须尽欢,莫使金樽空对月!
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-c7bf3660092f> in <module>()
4 print("局部变量a1=",a1) #输出局部变量的值
5 f2() #调用函数
----> 6 print("局部变量a1=",a1) #函数体外输出局部变量的值
NameError: name 'a1' is not defined
# 全局变量,既能在函数体内作用,也能在函数体外作用
a2 = "烟笼寒水月笼沙,夜泊秦淮近酒家!" #函数体外,全局变量
def f3():
a2 = "人生得意须尽欢,莫使金樽空对月!" #定义局部变量a2
print("局部变量a2=",a2) #输出局部变量的值 #函数体内可以正常输出结果
f3() #调用函数
print("全局变量a2=",a2) #函数体外输出全局变量的值 #输出结果a2
局部变量a2= 人生得意须尽欢,莫使金樽空对月!
全局变量a2= 烟笼寒水月笼沙,夜泊秦淮近酒家!
#在函数体内定义全部变量,global定义全局变量
a3 = "烟笼寒水月笼沙,夜泊秦淮近酒家!" #函数体外,全局变量
def f4():
global a3 #定义全局变量
a3 = "人生得意须尽欢,莫使金樽空对月!" #赋值全局变量a3
print("全局变量a3=",a3) #输出全局变量的值
f4() #调用函数
print("全局变量a3=",a3) #函数体外输出全局变量的值
全局变量a3= 人生得意须尽欢,莫使金樽空对月!
全局变量a3= 人生得意须尽欢,莫使金樽空对月!
#例 一棵松树做梦变成圣诞树,梦醒后,身上披满雪花,仍是一颗松树
pinetree = "我是一颗高傲的松树!" #定义全局变量
def f5():
pinetree = "挂上彩灯,穿上红白棉袄,戴上圣诞帽,我变成圣诞树啦!@^^@" #定义局部变量
print(pinetree) #打印局部变量
#函数体外
print("\n下雪啦…………\n")
print("="*15,"开始做梦!","="*15)
f5() #调用函数
print("="*15,"梦醒了!","="*15)
pinetree = "我身上披满雪花" + pinetree +"-_-" #为全局变量赋值
print(pinetree)#输出
下雪啦…………
=============== 开始做梦! ===============
挂上彩灯,穿上红白棉袄,戴上圣诞帽,我变成圣诞树啦!@^^@
=============== 梦醒了! ===============
我身上披满雪花我是一颗高傲的松树!-_-
三、匿名函数
# 匿名函数相当于电影中的群众演员,往往只用一次,不需命名
#例,计算圆的面积函数
import math
def f6(r):
return math.pi*r*r #圆的面积公式
r = 100
print("半径为",r ,"的圆的面积为:",f6(r))
半径为 100 的圆的面积为: 31415.926535897932
#也可以不用定义新函数来计算,用lambda计算,语法为 s = lambda[arg1,[,arg2,...argn]]:expression
r1 = 100
s = lambda r1:math.pi*r1*r1 #用lambda 关键词表示
print(s(r1))
31415.926535897932
#例 图书打折活动,按金额和折扣排序
book = [("平凡的世界",22.5,120),("零基础学Python",55,95),("不生病的智慧",22.5,36),("经济学原理",50,128)] #商品列表
print("商品信息\n",book,"\n")
book.sort(key = lambda x : (x[1],x[1]/x[2])) #排序规则
print("排序后的商品信息\n",book,"\n")
商品信息
[('平凡的世界', 22.5, 120), ('零基础学Python', 55, 95), ('不生病的智慧', 22.5, 36), ('经济学原理', 50, 128)]
排序后的商品信息
[('平凡的世界', 22.5, 120), ('不生病的智慧', 22.5, 36), ('经济学原理', 50, 128), ('零基础学Python', 55, 95)]
#例 用函数法计算半径分别为 5,6,7,8,9,10的圆的周长
import math
def f7(r):
return math.pi*2*r #圆的周长公式
list7 = [5,6,7,8,9,10]
for r in list7 :
print("半径为",r ,"的圆的周长为:",f7(r))
半径为 5 的圆的周长为: 31.41592653589793
半径为 6 的圆的周长为: 37.69911184307752
半径为 7 的圆的周长为: 43.982297150257104
半径为 8 的圆的周长为: 50.26548245743669
半径为 9 的圆的周长为: 56.548667764616276
半径为 10 的圆的周长为: 62.83185307179586