本文永久地址:https://my.oschina.net/bysu/blog/1506422
某在线培训机构python入门第1课习题:给定一个列表和一个target值,求出列表中某2个元素之和等于给定target值的所在索引,其值按从小到大的顺序排序。只求符合第一个值。譬如:给定列表[1,3,9,5,4,6],目标值为4,那么最终结果就是[1,3]的所在位置+1,也就是(1,2).
代码如下:
PS:不考虑算法性能哈~!仅供自己学习python基础
#coding=utf-8
#获取符合条件的值,并以元组的方式返回
def is_result_value(xlist,targer):
if min(xlist)> targer:
return "无解~!"
for x in xlist:
count = xlist.index(x) #获取当前元素的索引
if x > targer:
continue
else:
temp_list = xlist[count+1:] #根据获取到的元素索引,进行构造新的列表
for i in temp_list:
if (x+i)==targer:
return x,i
else:
continue
return "无解"
#根据得出的结果,对返回的值进行排序
def value_index_sort(xlist,tuple_value):
for x in tuple_value:
if "无解" in tuple_value:
return "无解~!"
if(max(tuple_value)>tuple_value[1]):#表示值的大小顺序为从大到小
a = xlist.index(tuple_value[1]) + 1
b = xlist.index(tuple_value[0]) + 1
else:
a = xlist.index(tuple_value[0]) + 1
b = xlist.index(tuple_value[1]) + 1
return a,b
maxnum = [1,3,9,5,4,6]
is_boolean = True
target = 0
#如果是无解,继续输入
while is_boolean:
target = int(input("target = "))
if "无解" in value_index_sort(maxnum,is_result_value(maxnum,target)):
is_boolean = True
print(value_index_sort(maxnum,is_result_value(maxnum,target)))
else:
is_boolean = False
#打印最终有解的结果
print(value_index_sort(maxnum,is_result_value(maxnum,target)))
本文永久地址:https://my.oschina.net/bysu/blog/1506422