用python解决两数求和

1、编写一个类,实现两数求和:给定一个整数列表和一个目标值,要求最终输出列表中的两个元素的索引编号(以列表形式打印,为确保结果唯一,小的编号在前),使这两个元素的和等于所输入的目标值。 (只对应确定的唯一一组解,并且不能使用同一个元素两次。)输入输出示例及效果如下图:【参考代码行数:25行】
代码参考:

img


输出预览:

img


lst=list(map(int,input("输入整数列表:").split()))
s=int(input("输入目标值:"))
def selcet(lst,s):
    for a in lst:
        for b in lst:
            if a!=b and s==a+b:
                return sorted([lst.index(a),lst.index(b)])
lis2 = []
lis2 = selcet(lst, s)

print('[%d,%d] -> numlist[%d]+numlist[%d]=%d' % (lis2[0], lis2[1], lis2[0], lis2[1], s))

img


for i in range(len(numlist)):    
    for j in range(i+1,len(numlist)):
        if numlist[i]+numlist[j]==target:
            print('输入整数列表:'+' '.join(numlist))            
            print(f'输入目标值:{target}')
            print(f'[{i},{j}] -> numlist[{i}]+numlist[{j}]={target}')
            break
class Summ():
    def __init__(self, numlist, target):
        self.numlist = numlist
        self.target = target
        self.res = None

    def get_ret(self):
        for num in self.numlist:
            for num2 in self.numlist:
                if num != num2:
                    if num + num2 == self.target:
                        return [self.numlist.index(num), self.numlist.index(num2)]


if __name__ == '__main__':
    numlist = input('输入整数列表:').split()
    numlist = [int(temp) for temp in numlist]
    print(numlist)
    target = int(input('输入目标值:'))
    summ = Summ(numlist, target)
    ret = summ.get_ret()
    print(f'{ret} -> numlist[{ret[0]}]+numlist[{ret[1]}]={target}')

class SuanSHi:
    def __init__(self, numlist, target):
        self.numlist = numlist
        self.target = target
        self.res = None

    def calc(self):
        # 从第一个数取值为a
        for index, item in enumerate(self.numlist):
            # 只取a后面的值为b
            for index2, item2 in enumerate(self.numlist[index + 1:], index + 1):
                # 看a+b是否为target
                if item + item2 == self.target:
                    # a的索引肯定小,小的索引在前
                    return [index, index2]
        return None


if __name__ == '__main__':
    # calc = SuanSHi([20, 1, 32, 33, 25, 10, 2, 3, 5, 7], 15).calc()
    # print(calc)
    numlist = input('输入整数列表:').split()
    numlist = [int(temp) for temp in numlist]
    target = int(input('输入目标值:'))
    calc = SuanSHi(numlist, target).calc()
    if calc is not None:
        print(f'{calc} -> numlist[{calc[0]}]+numlist[{calc[1]}]={target}')
    else:
        print("not found")

img


class Val:
    numlist = []
    target = None
    res = None

    def __init__(self, numlist, target):
        self.numlist = numlist
        self.target = target
        self.res = None

    def get_val(self):
        l = sorted(self.numlist)
        for i, val0 in enumerate(l):
            if (i == len(l) - 1): break
            for j in l[i + 1:]:
                if (val0 + j == self.target):
                    self.res = [self.numlist.index(val0), self.numlist.index(j)]
                    break
        return sorted(self.res)


# 输入整数列表:20 1 32 33 25 10 2 3 5 7
# 输入目标值:15
# [5,8] -> numlist[5]+numlist[8]=15

numlist = list(map(int, input("输入整数列表:").split()))
target = eval(input("输入目标值:"))
val = Val(numlist, target)
res = val.get_val()
print('[%d,%d] -> numlist[%d]+numlist[%d]=%d' % (res[0], res[1], res[0], res[1], target))

可以看看我的主页,我记得我记录过类似的问题,搜关键词就可以了