如何实现验证列表两索引对应元素之和等于目标值并输出配对信息
现有代码存在的问题
length函数逻辑冲突:你设定的无效判定是长度≥10或≤2,后续有效分支的判断条件却写了≥2且≤10,前后矛盾;同时break_loop == True是判断语句,不是赋值语句,虽然你后续加了break不会触发死循环,但属于冗余错误代码。entries函数逻辑错误:每次执行元素添加前都会执行lst = []清空列表,最终列表只会保留最后一个输入的数值,无法得到完整的输入列表。- 变量作用域问题:
target函数内输入的目标值没有定义为全局变量,后续逻辑无法读取该数值。
修复后完整实现代码
def get_length(): global lst_length while True: lst_length = int(input("Enter the length: ")) # 修正有效范围为3~9,匹配你原逻辑的无效判定规则 if 2 < lst_length < 10: print('This list contains', lst_length, 'entries') break print("Invalid list, length should be between 3 and 9") def get_entries(): global lst lst = [] for x in range(lst_length): number = float(input(f"Enter the entry at index {x}:")) lst.append(number) def get_target(): global target_num target_num = float(input("Enter the target number: ")) def find_two_sum(): # 遍历所有不重复的索引对,避免i和j互换的重复匹配 for i in range(len(lst)): for j in range(i+1, len(lst)): if lst[i] + lst[j] == target_num: print(f"匹配到符合条件的组合:数值 {lst[i]}(索引{i}) + 数值 {lst[j]}(索引{j}) = 目标值{target_num}") # 执行流程 get_length() get_entries() get_target() find_two_sum()
功能说明
- 输入的列表长度会限制在3~9之间,不符合要求会提示重新输入
- 支持输入浮点数类型的列表元素和目标值,匹配精度更高
- 会自动遍历所有不重复的索引对,匹配成功就输出对应的数值和索引,不会出现重复的逆序组合
- 如果需要匹配失败时输出提示,可以在
find_two_sum函数末尾自行添加对应逻辑
内容的提问来源于stack exchange,提问作者Colin Troy
相关产品推荐
相关产品推荐

