2 回答

TA貢獻1845條經(jīng)驗 獲得超8個贊
print語句的最后兩行不應(yīng)縮進-否則,它們位于for循環(huán)內(nèi)并執(zhí)行多次:
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))
還有許多方法可以優(yōu)化此代碼(例如,您實際上并不需要列表elst,olst并且可以在循環(huán)中計算總和或使用理解),但這是一個不同的問題。

TA貢獻1827條經(jīng)驗 獲得超8個贊
您已經(jīng)在上面得到了答案,但是由于您提到了開放的技巧,這是使用列表推導(dǎo)為您提供替代解決方案的方法:
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]
添加回答
舉報