Python语言基础-2.5函数基础
第2关:函数不同参数调用方法
相关知识
为了完成本关任务,你需要掌握:1.默认参数 2.位置与关键字参数 3.可变参数
函数参数有形参和实参之分,定义函数时函数头包含的参数是形参,函数调用时所使用的实际参数称为实参,函数调用的过程就是实参传递给形参的过程,python函数参数调用方法采用"传对象引用"的方式, 如参数为不可变对象,函数内部对参数的修改不会影响到函数外部的实际参数,如果参数为可变对象,例如列表,字典,则内部参数的修改会影响到函数内部的实参变量。
默认参数,位置参数与关键字参数
例1:求解一元二次方程的根的程序代码如下:
下面采用不同的参数调用方法均可获得方程的根:
1、位置参数:根据函数定义的位置来传递参数 x1, x2 = solve(3,4,5) #位置参数a=3,b=4,c=5 print('x1=%f, x2=%f' % (x1, x2))
2、默认参数:函数定义时为参数提供默认值,调用时默认参数的值可传可不传,放在所有参数的后面 a, b, c = 1, 10, -1 x3, x4 = solve(a, b) #默认第三个参数为5,a,b为位置参数 print('x3=%f, x4=%f' % (x3, x4))
3、关键字参数:通过直接给形式参数赋值的方式指示哪个参数需要传递什么值,可以脱离参数的顺序 x5, x6 = solve(b=20,c=10,a=2) #关键字参数 print('x5=%f, x6=%f' % (x5, x6)) 4、可变参数的应用 def vfunc(a,*b): #b为可变参数 for n in b: a+=n return a print(vfunc(1,2,3,4,5,6,7,8))
编程要求
根据提示,在右侧编辑器补充代码,编写下列程序:
1、定义一个判断是否是三角形的函数,是返回1,否则返回0;
2、定义一个计算三角形的面积的函数,设置默认参数为(a=3,b=4,c=5);
3、从键盘输入任意的三条边的长度,通过位置参数调用函数求面积并输出,面积保留小数点后4位;
4、根据默认参数计算三角形的面积并输出;
5、设置关键字参数计算指定三角形的面积;
6、计算多边形阴影部分的面积
代码如下:
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 9 10:04:39 2021
@author: hzh
"""
#根据提示信息,在空位补充代码,编写下列程序:
#1、定义一个判断是否是三角形的函数,IsTriange(a,b,c),
#其中a,b,c为三角形三条边,如果是返回1,否则返回0
#控制格式输出
def printf(pyout):
print('三角形面积:',end='')
print('%.4f'%pyout)
import math
def IsTriange(a,b,c):
##########begin################
if a+b>c and a+c>b and b+c>a:
return 1
else:
return 0
##########ends################
#定义一个计算三角形的面积的函数,TriArea(a,b,c),
#其中a,b,c为三角形三条边,如果构成三角形,返回三角形的面积,否则返回0
def TriArea(a=3,b=4,c=5):#设置默认参数
##########begin################
if IsTriange(a,b,c):
p = (a+b+c)/2
temp = p*(p-a)*(p-b)*(p-c)
s = math.sqrt(temp)
return s
else:
return 0
##########ends################
#3、从键盘输入任意的a,b,c 按位置调用函数实现计算三角形面积的函数,如果不能构成三角形,返回0,否则输出三角形面积。
##########begin################
a,b,c=eval(input())
squrtri=TriArea(a,b,c)
printf(squrtri)
##########ends################
print('*'*20)
#4、按默认参数调用函数计算三角形的面积,保留小数点后4位
##########begin################
printf(TriArea())
##########ends################
print('*'*20)
#5、设置关键字参数调用函数计算(c=10,b=20,a=15)三角形的面积
##########begin################
printf(TriArea(15,20,10))
##########ends################
print('*'*20)
#6、计算多边形阴影部分面积,保留小数点后4位
##########begin################
tris_all=TriArea(9.8,9.3,6.4)
tris_a=TriArea(2.9,4.1,4.7)
tris_b=TriArea(2.0,1.4,2.3)
Ans=tris_all-tris_a+tris_b
print('多边形面积为:',end='')
print('%.4f'%Ans)
##########ends################
print('*'*20)