Не вижу ничего напечатанного - PullRequest
0 голосов
/ 23 марта 2020

Не могли бы вы помочь мне понять, почему ничего нельзя напечатать?

list = [1, 2,3,4, 5, 7, 9] 

def test(list):  

    # Using for loop 
    for i in list: 
            d = i % 2
            if d == 0:
                print('odd')
                save = i + " it's odd"

            else:

                print('even')
                save= i + " it's even"

            return save
    print(save)

Ответы [ 3 ]

1 голос
/ 23 марта 2020

Это должно сработать для вас, дайте мне знать, если это не так. Вот пара указателей на ваш код выше:

  1. в строке save = i + "это странно" и save = i + "это четно " вы пытаетесь добавить строку, а int - python не очень нравится и выдаст ошибку. Но вы можете использовать метод .format для вставки значений в строку. Вот ссылка с некоторыми примерами https://www.geeksforgeeks.org/python-format-function/

  2. Возврат завершит вашу функцию. Таким образом, то, как у вас это получится, только для l oop получит первый индекс в списке. (индекс 0). Поэтому для ваших целей я бы просто go опередил ответный вызов.

  3. Вы называете свой список "списком", который интуитивно понятен, особенно если вы только начинаете. Но python имеет встроенные функции, которые вы можете вызывать, и одна из них - список. Это хорошая идея думать о них как о «зарезервированных словах» и не использовать их как имена переменных. Вместо этого попробуйте что-то вроде «lis» или «my_list». Вот ссылка на некоторые встроенные функции python, которые вы увидите много. https://docs.python.org/3/library/functions.html

  4. Наконец, чтобы запустить функцию, вы должны вызвать ее. Вы можете увидеть в коде ниже, в самом низу, что у меня есть test (lis) . Это говорит python до go вперед и запускает функцию с указанным вводом (в данном случае это lis)

    lis = [1, 2,3,4, 5, 7, 9]
    
    def test(list_):
    # edit 'def' requires tab indentation
    # Using for loop
        for i in list_:
            if (i % 2) != 0:
                save = ("{0} it's odd".format(i))
    
            else:
                save = ("{0} it's even".format(i))
            print(save)
    
    
    test(lis)
    
0 голосов
/ 23 марта 2020

просто я хотел сообщить вам, что ответ, который вы ответили, тоже мой, а не Мокен. Их имя там тоже появляется, потому что они отредактировали орфографическую ошибку. Также я создаю еще один ответ, чтобы ответить вам, потому что я еще не могу ответить в разделе комментариев на вопросы других людей. (Это зарезервировано для лиц, которые имеют репутацию 50 или выше на этом сайте). Если вам понравился мой последний ответ, попробуйте принять его в качестве ответа, нажав на флажок.

Чтобы ответить на другой ваш вопрос, касающийся сохранения вашей работы, я хотел бы записать ваш вывод в список. Раньше мы просто распечатывали его, но если вы записали его в список, вы сможете получить к нему доступ позже в своем коде. Сделайте так:

lis = [1, 2,3,4, 5, 7, 9]
empty_lis = []

def test(list_):
# edit 'def' requires tab indentation
# Using for loop
    for i in list_:
        if (i % 2) != 0:
            empty_lis.append(save)
            save = ("{0} it's odd".format(i))


        else:
            empty_lis.append(save)
            save = ("{0} it's even".format(i))

        print(empty_lis)


test(lis)

или, дополнительно, вы можете создать файл журнала для отслеживания вывода и места, где ваш скрипт прерывается. Он будет записывать в файл .log по любому указанному вами пути.

import logging

#create log
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s:%(levelname)s:%(message)s")
file_handler = logging.FileHandler(r'{insert path here}testlog.log')#iput file path in the curly
#braces and name the lof whatever you want. Just make sure it ends in .log

file_handler.setFormatter(formatter)
logger.addHandler(file_handler)


lis = [1, 2,3,4, 6, 7, 9]
empty_lis = []

def test(list_):
# edit 'def' requires tab indentation
# Using for loop
    for i in list_:
        try:
            if (i % 2) != 0:
                save = ("{0} it's odd".format(i))
                empty_lis.append(save)
            else:
                save = ("{0} it's even".format(i))
                empty_lis.append(save)

            logger.info(" my list is{0}".format(empty_lis)) # this writes to your log
            print(empty_lis)
        except:
            logger.exception("Did not work. See logs for details.")


test(lis)
0 голосов
/ 23 марта 2020

Brack, спасибо за ваше терпение.

  1. Как уже было сказано ранее, но, верите или нет, Спайдер не жалуется. Я буду использовать, как указано на geeksforgeeks.
  2. Понял ваше объяснение. Я попытался сделать это, потому что я следовал за кодом, чтобы внести в него некоторые изменения. Чтобы сделать это, я сначала пытался понять это.
  3. Понял. 4. Это еще одна вещь, которую я не вижу в этом коде. (Она работает, потому что я ее использую).

Код, который я пытался изменить, таков: https://gist.github.com/ericrobskyhuntley/0c293113aa75a254237c143e0cf962fa

И я хочу включить способ сохранения обработанных записей, когда он достигает, например, кратных 500 Это позволит избежать потери выполненной работы, если что-то пойдет не так (как это часто случалось)

Еще раз спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...