为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

湖上湖 2021-05-04 21:49:27
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)都会多次输出答案,直到它们达到正确和最终的答案为止。尽早感觉到我的过程从根本上存在缺陷,但希望事实并非如此!
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

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并且可以在循环中计算总和或使用理解),但这是一个不同的问题。


查看完整回答
反对 回复 2021-05-18
?
慕仙森

TA贡献1827条经验 获得超7个赞

您已经在上面得到了答案,但是由于您提到了开放的技巧,这是使用列表推导为您提供替代解决方案的方法:


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]  


查看完整回答
反对 回复 2021-05-18
  • 2 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信