鱼C论坛

 找回密码
 立即注册
查看: 9952|回复: 23

学得越多,感觉有时犯迷糊:关于for循环

[复制链接]
发表于 2023-6-11 20:53:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lzb1001 于 2023-6-11 20:55 编辑

def factorial(n):
    result = n   -----------  a
    for i in range(1, n):
        result *= i
    return result   ----------  b


在执行for循环时,每一次循环时a和b两步都会被执行到吗?以传入3为例,即调用factorial(3),也就是这个函数的执行逻辑……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-6-11 20:55:51 | 显示全部楼层
在你提供的 factorial 函数中, for 循环的作用是计算阶乘。函数的执行过程如下:

1.  result = n 这一步只在函数开始时执行一次,为 result 赋予初始值。
2.  for i in range(1, n): 这一步定义了一个循环,它会从1开始,一直到 n-1 (Python的 range() 函数不包括结束值)。在每次循环中, result *= i 都会被执行,用来更新 result 的值。
3.  return result 这一步只在循环全部完成后执行一次,返回最终计算的结果。

所以,答案是:在每一次 for 循环中,语句 result *= i 会被执行,而 result = n 和 return result 只在循环之外(一个在循环开始前,一个在循环结束后)执行一次。

然而,这段代码有一个小问题。当计算1的阶乘时, result 的初始值应该是1,而不是 n 。你可以像下面这样修改你的函数:

  1. def factorial(n):
  2.     if n == 0 or n == 1:
  3.         return 1
  4.     else:
  5.         result = 1
  6.         for i in range(2, n+1):
  7.             result *= i
  8.         return result
复制代码

在这个修正版本中,我们首先检查 n 是否为0或1,如果是的话,我们直接返回1。否则,我们将 result 初始化为1,然后用 for 循环从2到 n (包括 n )来计算阶乘。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 21:05:33 | 显示全部楼层
楼上gpt乱回答,gpt也不懂得变通,我来按lz的问题解答一下吧
1.这两行代码不在缩进范围内,所以不会在循环中执行
2.这个代码的过程是这样的:
n为3
result此时为3
然后进行循环,i为[1-(n-1)]的值,在这个例子中为[1-2],也就是result(n)分别乘以[1-2]区间中的每一个值,也就是n*1*2*...*(n-1),倒过来,其实就是1*2*3*...*(n-1)*n,也就是!n
求最佳呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-11 21:06:52 | 显示全部楼层
isdkz 发表于 2023-6-11 20:55
在你提供的 factorial 函数中, for 循环的作用是计算阶乘。函数的执行过程如下:

1.  result = n 这一 ...

我举的例子是小甲鱼无论书面或视频教材中的,你的意思是这个例子有瑕疵?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-11 21:14:10 | 显示全部楼层
陈尚涵 发表于 2023-6-11 21:05
楼上gpt乱回答,gpt也不懂得变通,我来按lz的问题解答一下吧
1.这两行代码不在缩进范围内,所以不会在循环 ...

不是吧,大神用GPT回答我的疑问啊?GPT有时会乱回答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 21:37:12 | 显示全部楼层
陈尚涵 发表于 2023-6-11 21:05
楼上gpt乱回答,gpt也不懂得变通,我来按lz的问题解答一下吧
1.这两行代码不在缩进范围内,所以不会在循环 ...

6的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 21:38:11 | 显示全部楼层
lzb1001 发表于 2023-6-11 21:06
我举的例子是小甲鱼无论书面或视频教材中的,你的意思是这个例子有瑕疵?

你的例子并没有瑕疵,这只是两种实现阶乘的方法有一些不同罢了。在小甲鱼的例子中,他选择把最后一个数n提前乘进去,然后再从1乘到n-1。在这种情况下,阶乘也能得到正确的结果,因为阶乘是乘法操作,乘法满足交换律,也就是说数字的乘法顺序并不影响最终结果。

而在我给出的例子中,我选择从1开始,然后乘到n。这也是我们通常在数学中看到的阶乘计算方式。

这两种方法都能正确计算出阶乘,只是计算的顺序有些不同。你可以选择任意一种你觉得更易理解或更符合你的编程风格的方法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 21:43:48 | 显示全部楼层
本帖最后由 isdkz 于 2023-6-11 21:46 编辑


这人怼天怼地(杠精)是这样的啦,我都懒得鸟他
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 21:51:37 | 显示全部楼层
本帖最后由 sfqxx 于 2023-6-11 22:35 编辑

是的,在执行 `for` 循环时,每一次循环都会对 `a` 和 `b` 这两步执行。

在传入参数 `n=3` 后,函数开始执行:

1. 首先,`result = n`,此时 `result` 的值为 `3`。
2. 然后进入 `for` 循环,第一次循环中 `i=1`。执行 `result *= i` 相当于将 `result` 乘以 `i`(即 `1`),这时 `result=3*1=3`。
3. 接着进行第二次循环,此时 `i=2`。执行 `result *= i` 相当于将 `result` 乘以 `i`(即 `2`),这时 `result=3*2=6`。
4. 最后进行第三次循环,此时 `i=3`,但是由于 `range(1, n)` 只包含 `1` 和 `2`,所以条件不满足,`for` 循环结束。
5. 函数返回 `result`,即 `6`。

因此,可以看出,在执行 `for` 循环时,每一次循环都会对 `a` 和 `b` 都有执行。

给个最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 22:12:54 | 显示全部楼层
lzb1001 发表于 2023-6-11 21:14
不是吧,大神用GPT回答我的疑问啊?GPT有时会乱回答

现在论坛就是这样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 22:15:31 | 显示全部楼层
isdkz 发表于 2023-6-11 21:43
这人怼天怼地(杠精)是这样的啦,我都懒得鸟他

得了吧大哥,你知道你的技术值都是哪来的吗,你看看人家小甲鱼的例子你的gpt硬生生说有错误,还不符合lz要求的啦,在鱼C里用gpt泡着没有用的啦,如果你真的是大学生,我劝你赶紧深入学习下你的专业好找工作
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 22:17:45 | 显示全部楼层
sfqxx 发表于 2023-6-11 21:51
是的,在执行 `for` 循环时,每一次循环都会对 `a` 和 `b` 这两步进行更新。

在传入参数 `n=3` 后,函数 ...

草蚌埠住了你们用gpt回答都不看一下回答的是什么嘛?没看见lz说的
每一次循环时a和b两步都会被执行到吗

你过程没问题,但是这回答的是a和b进行更新啊喂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 22:20:16 | 显示全部楼层
陈尚涵 发表于 2023-6-11 22:17
草蚌埠住了你们用gpt回答都不看一下回答的是什么嘛?没看见lz说的

你过程没问题,但是这回答的是a和b ...

https://chat2.jinshutuan.com
https://chat.jinshutuan.com
https://chat.wuguokai.cn
https://ai.wuguokai.cn
httpS://ai.useless.com
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 22:21:56 | 显示全部楼层
本帖最后由 isdkz 于 2023-6-11 22:23 编辑
陈尚涵 发表于 2023-6-11 22:15
得了吧大哥,你知道你的技术值都是哪来的吗,你看看人家小甲鱼的例子你的gpt硬生生说有错误,还不符合lz ...


哦,真是个搞笑的小天使啊,你以为你是哪位大佬呀?你这种一辈子都得不到提升的渣滓,就会在这里嘲讽别人。小甲鱼那是人才,而你这种连白日梦都做不好的废物只能在这里发泄自己的情绪。别以为你牛逼轰轰的在这里说话我就会骑驴找马,你这些瞎咋呼的人就不能服服帖帖的把技术学好吗?还有大学生这个称呼真的不适合你,应该改为吊车尾生。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-6-11 22:31:11 | 显示全部楼层
歌者文明清理员 发表于 2023-6-11 22:20
https://chat2.jinshutuan.com
https://chat.jinshutuan.com
https://chat.wuguokai.cn

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-11 22:34:03 | 显示全部楼层
歌者文明清理员 发表于 2023-6-11 22:20
https://chat2.jinshutuan.com
https://chat.jinshutuan.com
https://chat.wuguokai.cn

大神,最后一个好像不能用,网址打不开哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 22:36:17 | 显示全部楼层
lzb1001 发表于 2023-6-11 22:34
大神,最后一个好像不能用,网址打不开哦

他给的没用。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 22:36:24 | 显示全部楼层
lzb1001 发表于 2023-6-11 22:34
大神,最后一个好像不能用,网址打不开哦

敲错了,是httpS://ai.usesless.com
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-11 22:37:50 | 显示全部楼层
本帖最后由 lzb1001 于 2023-6-11 22:41 编辑

各位别斗嘴啦

得益于小甲鱼提供的这个学习和交流平台,大家因为喜欢、兴趣、爱好或需要而投入PYTHON的学习,也因此在这个过程中通过这个平台而结缘,相识就是缘分,按古代的说法,都是小甲鱼门下弟子,按先来后到排个师兄师弟师姐师妹的座次,都说四海之内皆兄弟,何况同门弟子哈,所以大家不要伤了彼此之间的和气
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-11 22:42:04 | 显示全部楼层
本帖最后由 陈尚涵 于 2023-6-11 22:43 编辑
isdkz 发表于 2023-6-11 22:21
哦,真是个搞笑的小天使啊,你以为你是哪位大佬呀?你这种一辈子都得不到提升的渣滓,就会在这里嘲讽别 ...


最主要的,我觉得是你理解错了我的帖子的意思,我的帖子是没有任何的攻击性,也没有阴阳怪气,只是叙述事实,不信你自己去看,这个帖子呢也同样是这样的。其次呢,我不是大佬,其次是你用gpt回答问题,然后呢,你的gpt的回答出了问题,我纠正了你gpt的回答的问题,这就成了嘲讽别人啊?然后呢,就因为这样,我就成了“一辈子都得不到提升的渣滓”“白日梦都做不好的废物”……小甲鱼确实是“人才”,我不作反对,但我也没说人家啊?只是你的gpt有问题罢了。至于技术,这点呢我虽然不算什么“人才”“大佬”吧,但是前端的js我基本上精通了,而且vue也基本上非常熟悉,c++的简单算法我也了解,找份工作我觉得还是没有什么难的。而且最后我发现,你怼我的发言好像和事实并没什么关系,全靠自己的‘文学“来喷人,最后强调,请不要用充满愤怒和攻击性的感觉来看待这个帖子。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 19:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表