Более одного цикла for в цикле Python - PullRequest
0 голосов
/ 11 июля 2011

Я новичок в Python / Coding и пытаюсь поместить циклы с двумя for в цикл while? Я могу это сделать? Как я могу распечатать словарь mydict, чтобы убедиться, что я делаю это правильно?

Я застрял.


40 минут спустя. Не застрял больше. Спасибо всем!

def runloop():
    while uid<uidend:
        for row in soup.findAll('h1'):
            try:
                name = row.findAll(text = True)
                name = ''.join(name)
                name = name.encode('ascii','ignore')
                name = name.strip()
                mydict['Name'] = name
           except Exception:  
                continue

        for row in soup.findAll('div', {'class':'profile-row clearfix'}):
            try:
                field = row.find('div', {'class':'profile-row-header'}).findAll$
                field = ''.join(field)
                field = field.encode('ascii','ignore')
                field = field.strip()
            except Exception:
                continue
            try:
                value = row.find('div', {'class':'profile-information'}).findAl$
                value = ''.join(value)
                value = value.encode('ascii','ignore')
                value = value.strip()
                return mydict
                mydict[field] = value
                print mydict
            except Exception:
                continue
    uid = uid + 1

runloop ()

Ответы [ 3 ]

1 голос
/ 11 июля 2011

На вложенных циклах:

Вы можете очень глубоко вкладывать циклы и циклы while, прежде чем python выдаст вам ошибку, но обычно нехорошо переходить на глубину более 4.Сделайте другую функцию, если вам понадобится много вложений.Тем не менее, вы можете использовать его нормально.

Некоторые проблемы с кодом:

  • Он никогда не достигнет операторов print, потому что в первом цикле for у вас есть оператор return.Когда python видит возвращение внутри функции, он покидает функцию и представляет возвращаемое значение.
  • Я бы избегал использования try, за исключением тех случаев, пока вы не поймете, почему вы получаете ошибки, которые вы получаете без них.
  • Убедитесь, что отступ соответствует.Может быть, это ошибка копирования и вставки, но похоже, что отступ некоторых строк является символом больше, чем другими.Убедитесь, что каждая вкладка имеет 4 пробела.Python, в отличие от большинства языков, выйдет из себя, если отступ будет отключен.
  • Не уверен, что вы просто не отправили вызов функции, но вам нужно вызвать runloop(), чтобы фактически использовать функцию.
0 голосов
/ 11 июля 2011

Вы не помогаете себе, имея их повсюду

       except Exception:  
           continue

В сущности, это говорит: «Если что-то пойдет не так, несите один и не говорите мне об этом».1005 * Нечто подобное позволяет вам хотя бы увидеть исключение

       except Exception as e:
           print e  
           continue

Объявлено ли где-нибудь mydict?Это может быть вашей проблемой

0 голосов
/ 11 июля 2011

Вы можете поместить столько циклов в другие циклы, сколько захотите. Это так называемые вложенные циклы.

Кроме того, печать словаря проста:

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