列表的总和

时间:2018-10-18 18:37:30

标签: python alternating

9。编写一个程序,该程序接受用户的9个整数并将它们存储在列表中。接下来,计算列表中所有元素的交替总和。例如,如果用户输入 1 4 9 16 9 7 4 9 11 然后计算 1 – 4 + 9 – 16 + 9 – 7 + 4 – 9 + 11 = –2

myList = []
value = None
count = 0
while count != 9:
  value = int(input("Please enter a number: "))
  myList.append(value)
  count = count + 1
  if count == 9:
    break
print(myList)
def newList(mylist):
  return myList[0] - myList[1] + myList[2] - myList[3] + myList[4] - myList[5] + myList[6] - myList[7] + myList[8]
x = newList(myList)
print(x)

我的代码返回正确的答案,但是我需要它来打印出实际的总和,如示例中所示。我已经坚持了一段时间。我对此有思想上的阻挠,还无法在网上找到类似的内容。 感谢您的帮助或提示。 另外,这是python 3。 谢谢。

5 个答案:

答案 0 :(得分:1)

a=[1, 4, 9, 16, 9, 7, 4, 9, 11]
start1=0
start2=1
sum1=0
first_list=[a[i] for i in range(start1,len(a),2)]
second_list=[a[i] for i in range(start2,len(a),2)]
string=''
for i,j in zip(first_list,second_list):
    string+=str(i)+'-'+str(j)+'+'
string.rstrip('+')
print('{}={}'.format(string,str(sum(first_list)-sum(second_list))))

输出

1-4+9-16+9-7+4-9+=-2

答案 1 :(得分:0)

您可以照做,但可以将其放置在打印声明中

print(myList[0] + " - " + myList[1] + " + " + myList[2] + " - " + myList[3] + " + " + myList[4] + " - " + myList[5] + " + " + myList[6] + " - " + myList[7] + " + " + myList[8] + " = " + x)

它不是很干净,但是它遵循您的逻辑,因此您的老师不会知道您从其他人那里得到了解决方案。

答案 2 :(得分:0)

可以执行以下操作:

def sumList(theList):
    value = 0
    count = 0
    steps = ""
    for i in theList:
        if count % 2 == 0:
            value += i
            steps += " + " + str(i)
        else:
            value -= i
            steps += " - " + str(i)
        count += 1
    print(steps[3:])
    return value


print(sumList(myList))

通过跟踪列表中的位置并使用模运算符,在+-之间进行交替。然后,它计算该值并附加到字符串以显示所采取的步骤。

答案 3 :(得分:0)

尝试这样做:

positives = myList[::2]
negatives = myList[1::2]
result = sum(positives) - sum(negatives)
print ("%s = %d" % (" + ".join(["%d - %d" % (p, n) for p, n in zip(positives, negatives)]), result))

我将在这里解释我在做什么。前两行占据了列表的一部分。我将myList中的其他所有数字从positives的0起始,到negatives的1起始。从那里,找到交替总和的结果只是取positives的总和并从中减去negatives的总和。

最后一行有点忙。在这里,我将肯定和否定在一起压缩,生成一个由(positive, negative)形式的2元组列表,然后使用字符串格式生成p - n形式。从那里,我使用join将它们与加号连接在一起,从而产生p0 - n0 + p1 - n1 + p2 - n2...。最后,我再次使用字符串格式以p0 - n0 + p1 - n1 + p2 - n2 ... = result的形式获取它。

答案 4 :(得分:0)

一旦您的9个或更多数字列表准备就绪,您也可以执行以下操作

.filter(..).first()

它显示:st = '' sum = 0 for i, v in enumerate(myList): if i == 0: st += str(v) sum += v elif i % 2 == 0: st += "+" + str(v) sum += v else: st += "-" + str(v) sum -= v print("%s=%d" % (st, sum))