有一点问题。我正在编写一个简单的程序,该程序接受数字输入(例如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/

10-15 18:50