第七天 第六章 函数
# 创建一个函数 # def functionname([parameterlist]): 定义 函数名([可选参数]): 可选参数可以为空或者多个 # ['''comments'''] ['''注释''']如果写了这个内容,调用时会显示帮助信息,即这里定义的内容 # [functionbody] [函数体] 函数被调用后要执行的功能代码。如果有返回值,可以用return语句返回。 # pass 如果定义一个什么都不做的函数,可以用pass语句作为点位符。 # 创建一个过滤危险字符的函数: def filterchar(string): ''' 功能:过滤危险字符(如黑客),并将过滤后的结果输出 about:要过滤的字符串 没有返回值 ''' import re pattern = r'(黑客)|(抓包)|(监听)|(Trojan)' sub = re.sub(pattern, '@_@', string) print(sub) # 运行此代码,将不显示任何内容,因为这个函数还没有被调用 # 调用函数:functionname([parametersvalue]) about = '我是一名程序员,喜欢看黑客方面的图书,想研究一下Trojan' filterchar(about) # 我是一名程序员,喜欢看@_@方面的图书,想研究一下@_@ # 参数传递:形参和实参 # 1 在定义函数时,函数名后括号内的参数为‘形式参数’,简称‘形参’ # 2 调用一个函数时,函数名后括号内的参数为‘实际参数’,简称‘实参’ # 传递参数时,当实参为不可变对象时,进行值传递,为可变对象时,进行引用传递 # 区别:进行值传递时,形参改变,实参不变,进行引用传递时,实参同形参一起改变 # 位置参数:也称必备参数,按照正确的顺序传到函数中,即调用时的数量和位置必须和定义时是一样的。 # 1、数量一致;2、位置必须与定义时一致; # 为参数设置默认值 # def functionname(...,[parameter1=defaultvalue1]) # [functionbody] # 可变参数有两种形式,一种是*parameter,另一种是**parameter。 # *parameter:接收任意多个实际参数并将其放到一个元组中。 def printcoffee(*coffeename): print('\n我喜欢的咖啡有:') for item in coffeename: print(item) printcoffee('蓝山') printcoffee('蓝山','卡布其诺','哥伦比亚') printcoffee('蓝山','卡布其诺','摩卡') # 使用列表作为参数时,可在列表名称前加星号 param=['蓝山','卡布其诺','哥伦比亚','巴西'] printcoffee(*param) # **parameter:接收任意多个类似关键字参数一样显式赋值的实际参数,并将其放到一个字典中。 def printsign(**sign): print() for key,value in sign.items(): print(key ,'的星座是:',value) printsign(绮梦='水平座',香凝='射手座') # 返回值:程序执行完一系列功能,有些需求会产生一个结果,我们可以把这个结果反馈给调用者。 def fun_checkout(money): '''功能:计算商品合计金额并进行折扣处理 money:保存商品金额的列表 返回商品的合计金额和折扣后的金额 ''' money_old = sum(money) # 计算合计金额 money_new = money_old if 500 <= money_old < 1000: # 满500可享受9折优惠 money_new = '{:.2f}'.format(money_old * 0.9) elif 1000 <= money_old <= 2000: # 满1000可享受8折优惠 money_new = '{:.2f}'.format(money_old * 0.8) elif 2000 <= money_old <= 3000: # 满2000可享受7折优惠 money_new = '{:.2f}'.format(money_old*0.7) elif money_old >=3000 : # 满3000可享受6折优惠 money_new = '{:.2f}'.format(money_old*0.6) return money_old,money_new # 返回总金额和折扣后的金额 #*****************************调用函数***********************************# print("\n开始结算……\n") list_money = [] # 定义保存商品金额的列表 while True: # 请不要输入非法的金额,否则将抛出异常 inmoney = float(input("输入商品金额(输入0表示输入完毕):")) if int(inmoney)==0: break # 退出循环 else: list_money.append(inmoney) # 将金额添加到金额列表中 money = fun_checkout(list_money) # 调用函数 print("合计金额:",money[0],"应付金额:",money[1]) # 显示应付金额