循环输入若干组列表+对应权值
如:
请输入列表:[1,3,4,7,9]
请输入权值:10
...
输入q退出
然后把这些大列表都分成邻近两两一组的若干个小列表
如
[1,3],[3,4],[4,7],[7,9]
最后将这些出现过的小列表中的权值加起来
比如[1,3]在两个不同的列表中出现了(假设输入的列表不会出现两次[1,3]),权值分别是10和30
输入[1,3]
那么就可以输出40
#循环输入
[1,3,4,7,9]
权值=10
#分成[1,3],[3,4],[4,7],[7,9]
[2,4,7,8]
权值=20
[1,3,7,8,10]
权值=30
#输入q结束输入
#输入:
1,3
#输出:
40#(10+30)
4,7;30
7,8;50
请问该如何实现?
如果不用数据库的话可以实现吗?
你题目的解答代码如下:
while True:
s = input('请输入列表:')
if s.lower()=="q":
break
li = eval(s)
n = int(input('请输入权值:'))
li2 = []
for i in range(len(li)-1):
li2.append([li[i],li[i+1]])
print(li2)
dic = {}
for a,b in li2:
dic[(a,b)] = a*n+b*n
print(dic)
a,b = map(int,input().split(","))
print(dic.get((a,b),f"没有{a},{b}子列表"))
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
你这个描述的好乱啊,最后的计算没看明白,为啥4,7:30,7,8;50,上边是1,3,换行40,到底需不需要换行
d = {}
while True:
l = input('请输入列表:')
if l=='q':break
w = input('请输入权值:')
if w=='q':break
l = eval(l)
w = eval(w)
for i in range(1,len(l)):
t = (l[i-1],l[i])
if d.get(t):
d[t] += w
else:
d[t] = w
print(d[eval('(' + input() + ')')])
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!