fread返回值为0_Toby 的 Python 笔记 | 函数学习(四):有返回值的函数

本文通过具体实例介绍了Python中有返回值函数的应用,包括基本算术运算、等差数列求和及复杂序列求和,并探讨了如何正确实现寻找最大值和最小值的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6b7a3c46ce9bb2b2e50bf0bb67066f92.gif

 函数学习:有返回值的函数

ea2053d9ccf2afbaaecb07a3f38d7e35.png

Learn Python,Let's Go!

25dc063dba9d42f56cd08f48d720766e.png

今天继续学习了有返回值的函数:

比如计算两个数相乘的这个例子:

#两数相乘def mul(num1,num2):    res = num1 * num2    return res    print(mul(1011111,99))

爸爸为了给我增加难度,让我把等差数列的求和问题实现一下:

我在草稿纸上画了一下、写出来是这样:

#连加加法公式def add(first,tail,d):    t = (tail - first) / d + 1    total = (first + tail) * t / 2    return totalprint(add(1,100,1))

接着爸爸又给我出了一个难题:

把学而思里面学过的 “宝塔数求和” 写一下,返回 求和值,比如:

1 + 2 + 3 + 4 + 5 + 6 + 7 + 6 + 5 + 4

1 + 3 + 5 + 7 + 9 + 11 + 9 +7

一般的宝塔数,知道 “头、尾,最中间”

程序如下:

#宝塔数求和def addTower(first,tail,mid,d):    tf = (mid - first) / d + 1    tolf = (first + mid) * tf / 2    tt = (mid - d - tail) / d + 1 #宝塔数中公差不一定全部为1!!!!!!!!!!    tolt = (tail + mid - d) * tt / 2    total = tolf + tolt    return total    #print(addTower(2,7,15,1)print('你要求和的宝塔数是:')TA = tuple(range(1,11+2,2))print(TA)TB = tuple(range(11-2,7-2,-2))print(TB)TAll = TA + TBprint(TAll)print(addTower(first = 1,tail = 7,mid = 11,d = 2))

运行结果是:

19428849ab36a67acfbd5cb91108e36d.png

6b7a3c46ce9bb2b2e50bf0bb67066f92.gif

进一步学习有返回值函数时:

我居然发现了书上一个小的bug,于是把课本的代码改了一下,分享给大家:

问题是:给你一串数字,从中找出最大值:

书中的程序是:

def max(*nums1):    max =  0 # 应该改成nums1[0]    for num in nums1:        if num > max2:            max = num    return maxmaxNum = max1(-111,-222,-222,-333,-444,-55,-5,-1.5)print('最大值是:')print(maxNum)

看出点啥问题没?

我想:聪明的你一定发现问题了!!!

  • 1、max函数是内嵌函数,我觉得可以换个名字;

  • 2、预设max=0不是很合理,假如所有的数字都比0小就出错了。

爸爸说:

Toby,你可以想一下,你们同学排队的时候,有没有这种情况:

找到一个同学站在第一位,如果下一个进入队伍的比这个同学高,就占到后面,如果再进来一个又比最后的一个同学高,他就要站在最后,那么全部比完了,最高的就是最后的。

要找最前面最矮的同学也可以一样操作。

这个是一种排序呢,你长大了要学习的。

我想了一下,觉得有点道理。

于是,在爸爸的建议和书上例子的启发下,我修改了一下代码:

def max1(*nums1):    max2 = nums1[0]    for num in nums1:        if num > max2:            max2 = num    return max2print(max1(-111,-222,-222,-333,-444,-55,-5,-1.5))

类似地,我试着找了最小值,觉得程序可以写成这样:

def min1(*nums2):    min2 = nums2[0]    for num2 in nums2:        if num2 < min2:            min2 = num2    return min2print(min1(222,222,555,5,1.5,-58))

大家看对不对呢?

所以写书的人忽略了的地方应该是原先指定 max = 0 是不妥当的。

于是我给作者QQ留了个消息,希望他下一次出版时能纠正过来。

d896da6d1d0e1304bf5265003ae5bd82.png8208d1c5f75592730929e1e9c0d0ae1e.png

亲亲 !点个  在看  吧 !

4178c566bd2df219b2b40cd5f860c729.gif  aef517d64af59497200a8f5a4cdae1f6.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值