|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)打印的结果是上面倒过来
本帖最后由 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 元素和为目标值
|
|