| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
rythm = [] 
while True:           # 循环体内手动创建一个列表 # 
    nub = input("请录入一个整数(输入STOP结束):") 
    if nub != "STOP": 
        int(nub) 
        rythm.append(nub) 
    else: 
        break 
target = int(input("请录入目标整数:")) # 这之下的代码是寻找列表里哪两个元素之和等于目标整数,如果有则打印下标 # 
n = len(rythm)      # 这一行以下的代码为什么不能正常执行 # 
for i in range(n): 
    for j in range(i,n): 
        if rythm[i] + rythm[j] == target: 
            print([i,j])  
 本帖最后由 jackz007 于 2022-9-30 12:36 编辑 
        如果你认为只是这两行有错
 -         int(nub)
 
 -         rythm.append(nub)
 
  复制代码
        那你就真的错了,很显然,你的代码在拼目标数的时候,没有排除 i = j ,就是说 rythm[ i ]、rythm[ j ] 是同一个元素的情况,当目标数恰好是 rythm 中某个元素 2 倍的时候,便会落入陷阱。 
        请参考这个代码
 - rythm = []
 
 - while True:
 
 -     nub = input("请录入一个整数(输入STOP结束):")
 
 -     if nub == "STOP":
 
 -         break
 
 -     else:
 
 -         rythm . append(int(nub))
 
  
- target , c = int(input("请录入目标整数:")) , 0
 
 - for i in range(len(rythm) - 1) :                  # 注意 i 的变化范围
 
 -     for j in range(i + 1 , len(rythm)):           # 注意 j 的变化范围
 
 -         if rythm[i] + rythm[j] == target:
 
 -             print('rythm [%d] + rythm[%d] = %d' % (i , j , target))
 
 -             c += 1
 
 - if not c:
 
 -     print('没有找到。')
 
  复制代码 
 
 
 |   
 
 
 
 |