【问题描述】AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
给定一个整数列表a和目标值s,请在该列表中找出两数之和为s的两个整数,并返回这两个数的下标。AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
输出结果:AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
(2,1)AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
(6,4)AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
(8,4)AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【题前思考】AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
根据问题描述,填写表4-2-4。AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
表4-2-4 问题分析AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【解题思路】AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
用字典dic来存放列表a各项的下标,以项为键,以下标为值。对列表中的每一个项a[i],求s与这个项的差b,即b=s-a[i],然后查找b是否在字典中,如果在字典中就表示a[i]+b==s符合题目要求,则打印出这两个数的下标(dic[b]和i),反之以这个项为键、下标为值创建项存入字典dic。AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【程序代码】AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【代码分析】AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
①:定义一个空的字典,存放列表a各项与下标的对应关系。AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
②:len(a)计算列表a的长度,此处a的长度为10。for i in range(len(a)),即对0到9的每个值i执行循环体(不包含10)。AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
③:计算与项a[i]互补的数,即与a[i]之和为s的数。AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
④:a[i]是列表中的项,字典dic的键也是列表中的项,且a[i]+b等于s,此时如果b在字典dic中,则a[i]和b满足题目要求,则按格式输出dic[b]和i,即这两个数的下标。AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
⑤:如果b不在字典中,就创建字典项,将a[i]与下标i的对应关系存到字典dic中。AHs100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库