-3

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。谢谢。

4

5 回答 5

1

尝试这样做:

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我从 0positives开始和从 1开始每隔一个数字negatives。从那里,找到交替总和的结果只是取positives和减去总和的negatives问题。

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

于 2018-10-18T18:48:30.350 回答
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
于 2018-10-18T18:43:20.187 回答
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))

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

于 2018-10-18T18:47:55.550 回答
0

准备好 9 个或更多号码列表后,您还可以执行以下操作

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))

它打印:1-4+9-16+9-7+4-9+11=-2

于 2018-10-18T20:00:30.083 回答
0

您可以照常做,但将其放在打印语句中

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

它不是很干净,但它遵循你的逻辑,所以你的老师不会知道你从别人那里得到了你的解决方案。

于 2018-10-18T18:40:49.617 回答