努力获取Sum()函数以从列表中输出一个值

olst = []

elst = []


E = int(input("Please enter your first number:  "))

O = int(input("Please enter your second number:  "))

for OS in range(E,O+1):

    if(OS%2!=0):

        olst.append(OS)


for ES in range(E,O+1):

    if(ES%2==0):

        elst.append(ES)


    print("Sum of all odd values is:  ", sum(olst))

    print("Sum of all even values is:  ", sum(elst))

该程序的目的是打印我两个整数之间的所有奇数之和以及偶数。这是我当前的代码,我对python还是相当陌生的,可以接受任何批评和技巧。我遇到的主要问题是当我运行程序时,sum(olst)和sum(elst)都会多次输出答案,直到它们达到正确和最终的答案为止。尽早感觉到我的过程从根本上存在缺陷,但希望事实并非如此!


湖上湖
浏览 163回答 2
2回答

精慕HU

print语句的最后两行不应缩进-否则,它们位于for循环内并执行多次:olst = []elst = []E = int(input("Please enter your first number:  "))O = int(input("Please enter your second number:  "))for OS in range(E,O+1):    if(OS%2!=0):        olst.append(OS)for ES in range(E,O+1):    if(ES%2==0):        elst.append(ES)print("Sum of all odd values is:  ", sum(olst))print("Sum of all even values is:  ", sum(elst))还有许多方法可以优化此代码(例如,您实际上并不需要列表elst,olst并且可以在循环中计算总和或使用理解),但这是一个不同的问题。

慕仙森

您已经在上面得到了答案,但是由于您提到了开放的技巧,这是使用列表推导为您提供替代解决方案的方法:E = int(input("Please enter your first number:  "))O = int(input("Please enter your second number:  "))olst = [i for i in range(E, O+1) if i%2  == 1]  elst = [i for i in range(E, O+1) if i%2  == 0]  print("Sum of all odd values is:  ", sum(olst))print("Sum of all even values is:  ", sum(elst))此外,您可以将代码的中间两行替换为olst = [i for i in range(E, O+1) if i%2 ]  elst = [i for i in range(E, O+1) if not i%2]  
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python