Python 列表 Iteration/Addition

Python List Iteration/Addition

我觉得我的问题很简单,但我想不通。我正在尝试将列表的偶数索引添加到变量中。错误仍然存​​在于函数的最后一行。我不明白为什么您不能使用 for 循环遍历列表来添加索引?

    def main():
        # Get Input Number
        n = int(input("Enter a number:"))

        # Call <oddEvenSame()>
        oddEvenSame(n)   


    def oddEvenSame(n):
        # Split all digits of <n> into their own index within <digits>
        digits = [int(i) for i in str(n)]

        # Add even indices of <digits> into <even>
        even = 0
        for j in range(0, len(digits), 2):
            even += digits[j]

    # Call <main()>
    main()

您的代码中没有错误,但它什么也没做,因为:

  1. 您 return 您的结果 even 来自 oddEvenSame 函数
  2. 在您的 main 函数中,您没有使用 oddEvenSame 调用中的 returned 值。

以下是您应该做的小改动:

def main():
    # Get Input Number
    n = int(input("Enter a number:"))

    # Call <oddEvenSame()>
    print(oddEvenSame(n))


def oddEvenSame(n):
    # Split all digits of <n> into their own index within <digits>
    digits = [int(i) for i in str(n)]

    # Add even indices of <digits> into <even>
    even = 0
    for j in range(0, len(digits), 2):
        even += digits[j]
    return even

main()

作为旁注,您可以使用 slicing 而不是循环 oddEvenSame func:

def oddEvenSame(n):
    digits = [int(i) for i in str(n)]
    return sum(digits[::2])

哈哈,真是个愚蠢的错误!谢谢...我这周刚学了函数。这是最终程序:

作业 12 "Odd-Even" - 2020 年 1 月 5 日到期

要求用户输入一个数字。如果奇数位数字加起来等于偶数位数字,则该数字有效。例如,1234 无效,因为 1+3 != 2+4,但 1232 有效,因为 1+3 = 2+2。您的程序应该使用我们在视频中讨论过的功能。特别是: 您的程序应该在 main() 函数中接收用户的输入。主函数应该用输入的数字调用一个名为 oddEvenSame 的函数。如果获取的数字有效,oddEvenSame 函数应该 return True,否则它应该 return False。您应该根据 oddEvenSame returned. 在主函数中输出 Invalid 或 Valid 注意:您可以假设用户将输入一个偶数位数的数字

    def main():
        # Get Input Number
        n = int(input("Enter a number:"))

        # Call <oddEvenSame()>
        if oddEvenSame(n) == True:
            print("Valid") 
        else:
            print("Invalid")  

    def oddEvenSame(n):
        # Split all digits of <n> into their own index within <digits>
        digits = [int(i) for i in str(n)]

        # Add even indecies of <digits> into <even>
        even = 0
        for j in range(0, len(digits), 2):
            even += digits[j]

        # Add odd indecies of <digits> into <odd>    
        odd = 0
        for k in range(1, len(digits), 2):
            odd += digits[k]

        # Check if odd digits add up to even digits 
        if odd == even:
            return True
        else:
            return False

    # Call <main()>
    main()