Python Список итераций / дополнений - PullRequest
2 голосов
/ 25 апреля 2020

Я думаю, что моя проблема очень проста, но я не могу понять это. Я пытаюсь добавить четные индексы списка в переменную. Ошибка сохраняется в последней строке функции. Я не понимаю, почему вы не можете перебрать список с помощью для l oop, чтобы добавить индексы?

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

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

В вашем коде нет ошибок, но он ничего не делает, потому что:

  1. Вы не возвращаете свой результат, even, из oddEvenSame function
  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 вместо l oop в oddEvenSame fun c:

def oddEvenSame(n):
    digits = [int(i) for i in str(n)]
    return sum(digits[::2])
0 голосов
/ 25 апреля 2020

Ха-ха, какая глупая ошибка! Спасибо ... Я только что выучил функции на этой неделе. Вот итоговая программа:

Задание 12 «Нечетный» - срок исполнения 5.1.2020

Попросите пользователя ввести номер. Номер действителен, если цифры нечетной позиции складываются с цифрами четной позиции. Например, 1234 недопустимо, потому что 1 + 3! = 2 + 4, но 1232 действительно, потому что 1 + 3 = 2 + 2. Ваша программа должна использовать функции, которые мы обсуждали в видео. В частности: Ваша программа должна принимать входные данные от пользователя в функции main (). Основная функция должна вызывать функцию с именем oddEvenSame с введенным номером. Функция oddEvenSame должна возвращать True, если полученное число действительно, в противном случае она должна возвращать False. Вы должны вывести 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()
...