内容正文:
项目11 函数的定义与调用及参数传递
编程基础——Python语言 /// ///
找出所有的在100~999内的水仙花数。水仙花数是指一个三位数,其各位数字的立方之和等于该数本身。例如,153=13+53+33,故153是一个水仙花数。编写Python程序,找出在100~999内所有符合条件的水仙花数。
任务21 寻找水仙花数——使用自定义函数
任务描述
任务分析
编写一个函数,将参数n分离出个、十、百位上的数字a、b、c,然后根据条件判断n是否为水仙花数,若是,则返回True;否则返回False。在100~999内,对所有整数进行测试,并输出符合条件的数。
编程基础——Python语言 /// ///
知识准备
在Python中,在使用函数之前必须首先定义(声明)函数,然后才能调用它。在使用函数时,只要按照函数定义的形式,向函数传递必需的参数,就可以调用函数以完成相应的功能,或者获得函数返回结果。
在Python中,使用关键字def定义一个函数,定义函数的语法格式如下:
4.1 定义函数
def 函数名([形式参数表]):
函数语句
[return返回值]
参数说明:
def: Python中任何函数的定义都必须以关键字def开始,其后空一格,再紧跟函数名。
编程基础——Python语言 /// ///
调用函数就是指使用函数,在Python中,当定义一个函数后,就相当于给予函数一个名称,指定了函数里包含的参数和代码块结构。完成这个函数的基本结构定义工作后,就可以通过调用的方式来执行这个函数,也就是使用这个函数。调用函数的语法格式如下:
4.2 调用函数
函数名([实际参数表])
参数说明:
函数名: 要调用的函数名称,必须是已经创建的函数的名称。
[实际参数表]: 可选参数,用于指定各个参数的值。如果需要传递多个参数的值,则各参数值之间使用逗号“, ”分隔; 如果该函数没有参数,则无须输入。
编程基础——Python语言 /// ///
根据任务分析,编写本任务的实现代码如下:
任务实施
def isNarcissistic(num): #自定义函数isNarcissistic
a=(num//100)%10 #获取三位数的百位数
b=(num//10)%10 #获取三位数的十位数
c=(num//1)%10 #获取三位数的个位数
if a*a*a+b*b*b+c*c*c==num: #判断水仙花数
return True #条件为真则返回 True
else:
return False #条件为假则返回False
n='' #自定义空字符串n
for i in range(100,1000): #遍历100至999范围内的所有三位数
if isNarcissistic(i): #调用自定义函数进行判断
n+=str(i)+'\t' #追加到字符串变量n
print(f'遍历100~999范围内的水仙花数是: {n}') #输出符合条件的水仙花数
编程基础——Python语言 /// ///
程序运行结果如下:
遍历100~999范围内的水仙花数是: 153 370 371 407
在Python中,函数的应用非常广泛。本书在前面已经多次接触过的函数,如print( )、input( )函数等,都是Python的内置函数,可以直接使用。除可以直接使用的内置函数外,Python还支持自定义函数,即将一段有规律的、可重复使用的代码定义为函数,从而达到“一次编写,多次调用”的目的。
任务总结
编程基础——Python语言 /// ///
已知1970年1月1日是星期四,要求根据用户输入的年份(>=1970年)和月份,输出当月的月历。
任务22 制作月历查询器——函数的参数传递
任务描述
任务分析
采用模块化方法,将程序划分为两大模块:输入日期模块和输出完整月历模块。而输出完整月历模块可分解为输出月历头部、计算1日是星期几、计算当月有几天、输出月历主体这四个函数。
输出月历头部函数:月历头部含有当月的月份名称,本函数需根据月份得到相应月份的名称。
计算1日是星期几函数:本函数首先计算年天数,即截至这一年1月1日的天数,用f