鱼C论坛

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

[已解决]课后作业不懂的地方

[复制链接]
发表于 2022-9-7 19:04:49 | 显示全部楼层 |阅读模式

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

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

x
a = []
b = 0
while b != "STOP":
    b = input('输入一个正整数:')
    if b != 'STOP':
            c =int(b)
            a.append(c)
            
target = int(input('请输入目标整数:'))
san = len(a)
for x in range(san):
    for c in range(x+1,san):
        if a[x] + a[c] == target:
            print([x,c])


对比:
a = []
b = 0
while b != "STOP":
    b = input('输入一个正整数:')
    if b != 'STOP':
            c =int(b)
            a.append(c)
            
target = int(input('请输入目标整数:'))
san = len(a)
for x in range(san):
    for c in range(x):
        if a[x] + a[c] == target:
            print([x,c])
        



for c in range(x+1,san):这里为啥是x+1到san
直接range(x)打印的结果是上面倒过来
最佳答案
2022-9-7 21:22:11
本帖最后由 Twilight6 于 2022-9-7 21:33 编辑



因为要判断每个数都是否和后续的数和是否等于目标值,所以需要从 x+1到san,而不是 0 到 x

直接 range(x) 就是 0 ~ x,第一次循环 第一个数不会进行判断

举个简单例子,假设列表 [1, 2, 3]

第一个代码 for 循环的第一次过程是判断 1 是否和 2、3 的和 为目标值

第二次 for 循环,x = 2 此时判断 2 是否和 3 为目标值

第三次 for 循环,x = 3,而内部 for 循环为 range(3,3) ,不进入循环,循环结束

但第二个代码 for 循环第一次过程为 0,跳过此次循环

第二次 for 循环时,x = 1,此时是判断 2 元素是否与  1 元素的和为目标值

第三次 for 循环时, x = 2,此时判断 3 元素是否与 1、2 元素和为目标值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-7 21:22:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2022-9-7 21:33 编辑



因为要判断每个数都是否和后续的数和是否等于目标值,所以需要从 x+1到san,而不是 0 到 x

直接 range(x) 就是 0 ~ x,第一次循环 第一个数不会进行判断

举个简单例子,假设列表 [1, 2, 3]

第一个代码 for 循环的第一次过程是判断 1 是否和 2、3 的和 为目标值

第二次 for 循环,x = 2 此时判断 2 是否和 3 为目标值

第三次 for 循环,x = 3,而内部 for 循环为 range(3,3) ,不进入循环,循环结束

但第二个代码 for 循环第一次过程为 0,跳过此次循环

第二次 for 循环时,x = 1,此时是判断 2 元素是否与  1 元素的和为目标值

第三次 for 循环时, x = 2,此时判断 3 元素是否与 1、2 元素和为目标值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-9-7 21:22:39 | 显示全部楼层
Twilight6 发表于 2022-9-7 21:22
因为要判断每个数都是否和后续的数和是否等于目标值,所以需要从 x+1到san,而不是 0 到 x

直接 ran ...



下次问问题尽量附带上题目吧,能让他人更快的解决你的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-7 21:30:36 | 显示全部楼层
Twilight6 发表于 2022-9-7 21:22
下次问问题尽量附带上题目吧,能让他人更快的解决你的问题

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

使用道具 举报

发表于 2022-9-7 21:31:44 | 显示全部楼层
Twilight6 发表于 2022-9-7 21:22
因为要判断每个数都是否和后续的数和是否等于目标值,所以需要从 x+1到san,而不是 0 到 x

直接 ran ...




我上面这个回答有问题,我说第二个代码有过多的冗余判断,其实不然,每次判断都是新的数进行判断,实际上两者代码都可行,只是循环过程不同

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

使用道具 举报

 楼主| 发表于 2022-9-7 22:14:59 | 显示全部楼层
Twilight6 发表于 2022-9-7 21:22
因为要判断每个数都是否和后续的数和是否等于目标值,所以需要从 x+1到san,而不是 0 到 x

直接 ran ...

那大佬第二种算错的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-7 22:18:32 | 显示全部楼层
老婆多喝烫水 发表于 2022-9-7 22:14
那大佬第二种算错的吗?




没错,两代码都可行

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

使用道具 举报

 楼主| 发表于 2022-9-7 22:23:35 | 显示全部楼层
Twilight6 发表于 2022-9-7 22:18
没错,两代码都可行

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

使用道具 举报

发表于 2022-9-7 22:25:30 | 显示全部楼层



客气了,不要误导到你就行

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 18:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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