【问题标题】:Python List Iteration/AdditionPython列表迭代/添加
【发布时间】:2020-08-09 04:40:44
【问题描述】:

我认为我的问题很简单,但我无法弄清楚。我正在尝试将列表的偶数索引添加到变量中。错误仍然存​​在于函数的最后一行。我不明白为什么你不能用 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


【解决方案1】:

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

  1. 您不会从 oddEvenSame 函数返回结果,even
  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()

附带说明,您可以在oddEvenSame func 中使用slicing 而不是循环:

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

【讨论】:

    【解决方案2】:

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

    作业 12“奇偶” - 2020 年 1 月 5 日到期

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

        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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      相关资源
      最近更新 更多