第5章 巧用函数,制作实用小工具 5.2 计算周长和面积 5.2.1 为参数设置默认值 有了函数,我的代码看起来更整洁了,但是每次都传入好多参数感觉很麻烦。 这个问题好解决,函数里可以给参数设置默认值,如果使用默认值,就可以不传该参数。 定义函数时,可以直接为参数设置默认值,当调用函数时如果使用默认值,则可以不为该函数传递参数,这使我们调用函数时操作更加方便。在Python中定义带有默认值参数的函数,其语法格式如下所示。 def function_name(…,[parameter=defaultvalue]): [statements] function_name为函数名称,parameter=defaultvalue为可选参数,默认值为 defaultvalue,statements 表示函数体。 5.2.2 带有默认值参数的周长面积函数 例 使用函数来计算长方形的周长和面积。 小智想用程序计算长方形的周长和面��,他决定将计算周长和面积的功能定义为函数来实现。 代码如下所示。 def calculate(a, b, category=1): '' ' 定义计算函数 , a、b 表示长和宽,category 表示类别,默认为 1 (计算周长)''' if category == 1: # category 为 1 表示计算周长 print(" 长方形的周长为:", 2 * (a b)) else: # category 为 2 表示计算面积 print(" 长方形的面积为:", a * b) print("1 计算长方形周长 2 计算长方形面积 ") choose = int(input(" 请输入你的选择:")) a = int(input(" 请输入长 :")) b = int(input(" 请输入宽 :")) if choose == 1: calculate(a, b) # 调用函数,使用默认参数 else: calculate(a, b, choose) # 调用函数 运行以上代码,输出结果如下所示。 1 计算长方形周长 2 计算长方形面积 请输入你的选择:1 请输入长 :24 请输入宽 :9 长方形的周长为:66 5.3 计算乘坐地铁的费用 到目前为止,我定义的函数都只是执行功能,函数可以带返回值吗? 当然可以,使用 return 语句即可。 在函数体中,可以使用 return 语句来指定函数的返回值,如果没有使用 return 语句,则默认返回 None。 例 定义函数计算乘坐地铁的费用,并将计算结果返回。 小智的妈妈每天乘坐地铁上下班,地铁公司的计费规则如下:每个月内每张卡累计消费金额超过100元后的乘次,给予八折优惠,累计消费金额超过150元(原价)后的乘次,给予五折优惠,累计消费金额超过400元(原价)后的乘次不再享受打折优惠。 小智决定使用程序帮妈妈计算每个月实际支付的乘坐地铁的费用。 具体代码如下所示。 def cost(fee): ''' 计算优惠后的乘坐地铁的费用并返回 ''' result = 0; if fee <= 100: result = fee elif 100 < fee <= 150: # 超出 100 的部分打八折 result = 100 (fee - 100) * 0.8 elif 150 < fee <= 400: # 超过 150 的打五折 result = 100 40 (fee - 150) * 0.5 elif 400 < fee: # 超过 400 不打折 result = 100 40 125 (fee - 400) return result expense = int(input(" 请输入当月优惠前的地铁消费金额 :")) print(" 优惠后的地铁费用 :", cost(expense)) 运行以上代码,输出结果如下所示。 请输入当月优惠前的地铁消费金额 :600 优惠后的地铁费用 : 465 5.4 我们来交换 函数可以返回多个值吗? 在 Python 中允许函数返回多个值。 在 Python 中,函数是可以返回多个值的。返回多个值时,各个值使用逗号分隔开,结果以元组的形式返回。 例 交换两个变量的值。 在程序中如何将两个变量的值进行交换呢? 刚开始学编程的同学,可能会直接写出下面这样的代码。 a = b b = a 运行程序就会发现,这样写的结果是变量a和b的值都变成了b的值。这是因为当执行a=b时,b的值赋值给了a,a原来的值已经丢失了。 想一想,我们在日常生活中,想要交换两个杯子里的水,需要如何操作呢?如图5-1所示,想要交换1号和2号杯子里的水,可以借助3号空杯。首先将2号杯里的水倒入3号杯,其次将1号杯里的水倒入2号杯,再次将3号杯里的水倒入1号杯,至此,1号和2号杯中的水完成了交换。 图5-1 交换两个杯子里的水 程序中交换两个变量的值与此类似,需要借助第三个变量。 具体代码如下所示。 a = int(input(" 请输入 a:")) b = int(input(" 请输入 b:")) c = a a = b b = c print("——————交换后—————") print("a:", a) print("b:", b) 运行以上代码,输出结果如下所示。 请输入 a:13 请输入 b:7 —————交换后————— a: 7 b: 13 也可以借助函数实现,在函数中直接返回两个变量的值,再将结果赋值给 a、b,从而达到交换的目的。 部分代码如下所示。 def exchange(x, y): return y, x a, b = exchange(a, b) 上述两种方法都可以实现交换变量的功能,但在 Python 中还有更简洁的方式,只需一行代码即可完成交换。代码如下所示。 a, b = b, a