|
|
问题分析:
你的代码有两个主要错误,导致运行时出现异常或逻辑错误:
1. 变量未初始化:nums = 后面没有赋值,应为空列表 nums = [] 。
2. 列表索引错误:在最后的if判断中,nums + nums == target 是尝试对列表做加法(会报错),应该使用索引:nums[i] + nums[j] == target 。
另外,你的循环嵌套可能会输出 i == j 的情况(同一个元素相加),而且当输入 999 时,它也会被加入列表后再判断退出,这可能不是你想要的效果。
修正后的代码:
-
- nums = []
- STOP = 999
- num = int(input("请录入一个整数(输入STOP结束):"))
- while True:
- if num == STOP:
- break
- nums.append(num)
- num = int(input("请录入一个整数(输入STOP结束):"))
- target = int(input("请录入目标整数:"))
- length = len(nums)
- for i in range(length):
- for j in range(i + 1, length): # 避免重复组合
- if nums[i] + nums[j] == target:
- print(i, j)
复制代码
要点说明:
- 先判断是否等于STOP,再添加,避免把STOP本身加入列表。
- 内层循环从 j = i+1 开始,避免 i==j 的情况,同时跳过重复对(如 (0,1) 和 (1,0))。
- 如果希望允许同一个元素使用两次(如 i==j),可将内层循环改为 for j in range(length): 并加上 if i != j 判断。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|