1、编写一个类,实现两数求和:给定一个整数列表和一个目标值,要求最终输出列表中的两个元素的索引编号(以列表形式打印,为确保结果唯一,小的编号在前),使这两个元素的和等于所输入的目标值。 (只对应确定的唯一一组解,并且不能使用同一个元素两次。)输入输出示例及效果如下图:【参考代码行数:25行】
代码参考:
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))
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")
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))
可以看看我的主页,我记得我记录过类似的问题,搜关键词就可以了