有一点问题。我正在编写一个简单的程序,该程序接受数字输入(例如1567),并将奇数加在一起,并在输出中列出它们。这是我的代码:
import math
def oddsum(n):
y=n%10
if(y==0):
return
if(y%2!=0):
oddsum(int(n/10))
print (str(y),end="")
print (" ",end="")
else:
oddsum(int(n/10))
def main():
n=int(input("Enter a value : "))
print("The odd numbers are ",end="")
oddsum(n)
s = 0
while n!=0:
y=n%10
if(y%2!=0):
s += y
n //= 10
print("The sum would be ",end=' ')
print("=",s)
return
main()
它输出很好,在本示例中,它将打印1 5和7作为奇数。但是,在计算总和时,只会说“ 7”,而不是应该的“ 13”。我无法真正理解我做错事情背后的逻辑。如果有人可以帮助我,我将不胜感激:)
我知道这是“ s + = y”的问题,因为它基本上只是将7加在一起,但是我不确定如何获取输出的3个数字并将它们加在一起。
最佳答案
正如@Anthony所提到的那样,您的代码永远保持在156,因为它是偶数。
我建议您直接使用字符串输入并遍历每个元素。
n = input("Enter a value : ") #'1567'
sum_of_input = sum(int(i) for i in n if int(i)%2) #1+5+7=13
[print(i, end="") for i in n if int(i)%2] #prints '157'
请注意,如果
int(i)%2
为奇数,则将返回1。关于python - Python:将输入中的奇数相加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49888366/