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。 谢谢。
答案 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))