Member 12173667 Ответов: 2

Как заполнить списки данными в цикле в зависимости от номера счетчика


Я пытаюсь получить 604 строки (URL-адреса) и вставить их в 4 списка
каждый список должен содержать 151 строку (URL)

Что я уже пробовал:

first = []
second = []
third = []
forth = []

for i in range(1, 605):
    try:
        url = "http://url/" + str(i) + ".png"

        if i <= 151:
            first.append(url)

        elif i > 151:
            if i < 303:
                second.append(url)
            else:
                continue

        elif i > 302:
            if i < 453:
                third.append(url)
            else:
                continue
        else:
            forth.append(url)
    except Exception as e:
        print("Error accrued: " + str(e))

print("first:", first)
print("second:", second)
print("third:", third)
print("forth:", forth)


результаты, которые я получаю, относятся только к первому и второму спискам, остальные списки не получают строк !!
список третий и четыре результата пустые!!
есть идеи, почему это происходит

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
результаты, которые я получаю, относятся только к первому и второму спискам, остальные списки не получают строк !!

Используйте отладчик для наблюдения за выполнением кода, это поможет вам понять, как он работает или не работает.

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

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

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

27.3. ПДБ — отладчика Python — питон 3.6.1 документации[^]
Отладка в Python | Python покоряет Вселенную[^]
pdb – интерактивный отладчик - Python модуль недели[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


Рейтинг:
19

Christian Graus

elif i > 151:
        if i < 303:
            second.append(url)
        else:
            continue


Это говорит, что если это < 151, то проверьте, если это < 303. Если нет, продолжайте. То есть ничего не делать.

Попробуй
elif(i> 151 && i < 303)


Я предполагаю, что оператор and является стандартным в Python


Member 12173667

Я уже пробовал, но та же проблема

Christian Graus

Ерунда. Если вы написали код, который проверил диапазон за один шаг, следующий "elif" будет работать так, как вы надеетесь. Независимо от того, что вы думали, что пробовали, вам явно нужно вставить его сюда, чтобы мы могли сказать вам, что с ним не так.

Member 12173667

вместо этого я получаю URL-адреса от 152 до 604 заполненных во втором списке

for i in range(1, 605):
    try:
        url = "http://url/" + str(i) + ".png"

        if i <= 151:
            first.append(url)


        elif (i > 151 & i < 303):
            second.append(url)


        elif i > 302 & i < 453:
            third.append(url)
        else:
            forth.append(url)
    except Exception as e:
        print("Error accrued: " + str(e))

Christian Graus

& - это побитовое и. Не то, что ты хочешь. Google говорит мне, что вы хотите слово "и"

Member 12173667

Отлично сработало!! благодарю вас сэр :)

Christian Graus

Не беспокойтесь :) Всегда публикуйте код, который вы пробовали, мы пытаемся помочь, но не видим вашего экрана

Member 12173667

ОК