python3定义函数_[Python3] 函数定义与使用[TZZ]

1

Python3中必须通过“def 函数名(参数1, 参数2, …): 语句块”的格式定义一个自定义函数。启动IDLE程序,在输入提示符中输入“def dump(v):”并回车,然后在下一行中输入“print(v)”并回车。接着,连续按2次回车键,确认函数dump的代码编写。在新的输入提示符中,输入“dump('Hello Python!')”并回车,可以见到dump()函数的执行结果;

3c42a5ea3e8630485f865360c33104ebf7a75219.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

2

定义一个求两个数和的函数sum(),然后通过dump()函数输出该函数的调用结果(可以多调用几次,每次传入不同的值,熟悉Python对数值运算的处理);

31097f43d7d44831452e7213d40f822b75ee5119.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

3

定义一个求两个数差的函数sub(),然后输出该函数的调用结果;

f7e6410f822b74ee5af7cfacda2c8cf1d9a74a19.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

4

定义一个求两个数乘积的函数mul(),然后输出该函数的调用结果;

8db0c6a7263348848026cf98ddee7b7f870e4519.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

5

定义一个求两个数商的函数div(),然后通过dump()函数输出该函数的调用结果。如果调用div()函数时,故意将除数(第2个参数)指定为0,Python将会报除零错误;

874f6275e5f4fcf5bbc8be7a21d7726b0de2bd19.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

6

定义一个求两个数模的函数mod(),然后通过dump()函数输出该函数的调用结果。根据测试结果可知,Python支持对浮点数(小数)进行取模操作;

0da37be7340f647849e63a0dfd3e21c2bad6b519.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

7

加减乘除四种函数都试过了之后,我们再写一个判断素数的函数。写这个函数之前,我们可以先重置一下IDLE的Shell环境。点击IDEL菜单栏上的“Shell > Restart Shell”;

ba97ffd06de89a61e3e0c52745e8b004551bad19.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

8

素数(质数)定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。在程序中判断一个数是否为素数有3种方法。我们先试试最低效的那个,即判断从2~N(需要判断的自然数)中是否存在能够被N整除的数,存在则该数不是素数。在输入提示符中,定义一个名为isPrime(n)的函数,然后输入下图中所示的代码。注意:这份代码只判断了输入数n是否大于1,但是并没有检测n是否为整数(自然数);

d04eec260d9a310e795c6d9e31b842406bfea219.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

9

继续定义一个打印指定数字范围内的素数的函数checkPrime(from, to)。可惜,from是Python的关键字,一回车它就报错了。因此,将其改为checkPrime(start, end)。然后输入下图中所示的函数实现代码并调用checkPrime(1, 100)。其中用到的内建函数range(),用于返回一个按指定步长增长的列表,因此可以与for..in语句配置使用(注:print()函数中可以传入多个参数,它们会在同一行中顺次显示);

6bbfdd14f1c595ee3704339327530688902c9a19.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

10

第2种判断素数的方法是判断整数n能够被2~n / 2内的整数整除,如果能则不是素数。在输入提示中,通过ALT + P,将代码回退到isPrime()函数的定义代码,然后将其改为isPrime2()并修改range()范围;

07c98f2ca5cadce8ed8d8448fcf7980e5e209519.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

11

定义另一个打印指定数字范围内素数的函数checkPrime2()(通过ALT + P回退到checkPrime()的定义代码进行修改),该函数中通过isPrime2()函数判断数字是否为素数;

91091efc77f7980edee5c7c5d4db3620b83a9119.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

12

在输入提示符中调用checkPrime2()函数。Python直接就报错了。意思是说n / 2是一个浮点数,range()中要求一个整数;

5e615d715fdb36203cff493dabc5260f89358d19.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

13

回退到isPrime2()的定义代码,用int()函数将n / 2强制转换为整数。然后,重新在提示符中调用checkPrime2()函数,可以见到正确的打印结果;

b87bd38920c5260f01f0593ed2de450789018919.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

14

第3种判断素数的方法是判断2~(√N + 1)中是否存在能被N整除的数,存在则表示该数不是素数(需要import math模块并调用sqrt()求平方根,暂时跳过)。Enjoy!

END

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值