Python列表迭代/添加

问题描述 投票:2回答:2

我认为我的问题很简单,但我无法解决。我试图将列表的偶数索引添加到变量中。错误仍然存​​在于函数的最后一行。我不明白为什么您不能使用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()
python list indexing addition indices
2个回答
1
投票

您的代码中没有错误,但是它没有任何作用,因为:

  1. 您不从even函数返回结果oddEvenSame
  2. main函数中,您不使用oddEvenSame调用返回的值。

这是您应该做的较小更改:

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函数中的循环:

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

0
投票

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

作业12“奇偶”-到期时间:5.1.2020

要求用户输入数字。如果奇数位数字加到偶数位数字,则该数字有效。例如1234是无效的,因为1 + 3!= 2 + 4,而1232是有效的,因为1 + 3 = 2 + 2。您的程序应使用视频中讨论的功能。特别是:您的程序应在main()函数中接受用户的输入。主函数应使用输入的数字调用一个名为oddEvenSame的函数。如果获得的数字有效,则奇数EvenSame函数应返回True,否则应返回False。您应该在main函数中输出Invalid或Valid,具体取决于返回的奇数EvenSame。注意:您可以假设用户输入的数字为偶数位数

    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()
© www.soinside.com 2019 - 2024. All rights reserved.