# 创建一个函数
# 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]) # 显示应付金额