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