第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