鱼C论坛

 找回密码
 立即注册
查看: 1012|回复: 8

[已解决]小白问个初级作业问题

[复制链接]
发表于 2021-12-22 14:15:05 | 显示全部楼层 |阅读模式

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

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

x
nums = [2, 7, 11, 15]
target = 9

n = len(nums)
for i in range(n):
    for j in range(i+1, n),这个循环体怎么理解

我试过把内循环改为range(i),然后分别打印 i 和 j 的值,结果跟我想的不一样,理解不了
最佳答案
2021-12-22 18:31:55
本帖最后由 涟漪袅袅 于 2021-12-22 18:33 编辑

刚按错了,没写完,下接
for i in range(4):
    for j in range(i):
当i=0时,内嵌那个循环就是
for j in range(0)
而stop参数不被包含,所以这里range(0)是没有取值的,自然j也没有取值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-22 15:18:25 From FishC Mobile | 显示全部楼层
以你的代码为例:
n 表示列表长度
i 表示从 0 开始循环至 n(但不包括 n 本身)
j 表示从 i + 1 开始循环至 n(但不包括 n 本身)

举例:
i = 0, j = 1, 2, ..... n-1
i = 1, j = 2, 3, ..... n-1
i = 2, j = 3, 4, ..... n-1
.
.
.
.
.
i = n-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-22 16:04:36 | 显示全部楼层
nums表示一个有“2,7,11,15”这四个元素的列表,target表示值为9的一个变量,
len()这个函数表示对括号里的参数求长度,nums有四个元素,所以n=4
range(n)这个函数表示返回一个列表【0,1,2,3,4......n-1】
range(i+1,n)就表示【i+1,i+2,i+3......n-1】
因为n=4,所以那个循环就可以看成
for i in range(4):
    for j in range(i+1, 4)
再把range()函数代入看
for i in [0,1,2,3]:
    for j in [i+1,i+2...3]
然后你这没有输出,我按我的想法加了一个输出
for i in range(n):
         print("i=",i)
         for j in range(i+1, n):
               print("j=",j)
那么输出应该就是
i=0
j=1
j=2
j=3
i=1
j=2
j=3
i=2
j=3
i=3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-22 16:17:03 | 显示全部楼层
另外这个代码的知识点就是以下几个:
1.len()函数
2.range()函数
3.for循环的嵌套循环
把他们弄懂了理解这个代码就不难
这些知识点你可以去浏览器搜“菜鸟教程”,在他的“服务端”--“学习python”里看,或者直接在他的搜索框搜索,像函数啥的不懂就可以搜一下,例如搜“python3   len()”之类的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-22 18:14:27 | 显示全部楼层
涟漪袅袅 发表于 2021-12-22 16:04
nums表示一个有“2,7,11,15”这四个元素的列表,target表示值为9的一个变量,
len()这个函数表示对括号里 ...

谢谢回答,有一个疑问,如果按照你的公式
for j in range(i+1, n)  改为  for j in range(i)
打印的结果是
i= 0
i= 1
j= 0
i= 2
j= 0
j= 1
i= 3
j= 0
j= 1
j= 2
那这个答案我是不理解,不应该是
i= 0
j= 0
j= 1
j= 2
i= 1
j= 2
i= 2
i= 3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-22 18:26:05 | 显示全部楼层
VinsenX 发表于 2021-12-22 18:14
谢谢回答,有一个疑问,如果按照你的公式
for j in range(i+1, n)  改为  for j in range(i)
打印的结 ...

range([start,]stop[,step=1])
这个函数有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
step=1表示第三个参数的默认值是1。(间隔)
range这个函数的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列。(不包含stop参数)
当没有start参数是就默认生成从0开始到stop参数的值结束的数字序列(不包含stop参数)
所以改成for j in range (i)后
for i in range(4):

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-22 18:31:55 | 显示全部楼层    本楼为最佳答案   
本帖最后由 涟漪袅袅 于 2021-12-22 18:33 编辑

刚按错了,没写完,下接
for i in range(4):
    for j in range(i):
当i=0时,内嵌那个循环就是
for j in range(0)
而stop参数不被包含,所以这里range(0)是没有取值的,自然j也没有取值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-22 18:39:27 | 显示全部楼层
还是不理解的话可以看看我之前说的菜鸟教程里的python3  range()函数的解释,上面有代码输出图片,可能好理解点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-22 18:54:11 | 显示全部楼层
涟漪袅袅 发表于 2021-12-22 18:31
刚按错了,没写完,下接
for i in range(4):
    for j in range(i):

啊,看到这里就理解了,0没有取值,转牛角尖了,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 16:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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