Найти - Пользователи
Полная версия: выйти из всех циклов
Начало » Python для новичков » выйти из всех циклов
1 2 3 4 5
4kpt_II
Budulianin
Опоздали
sypper-pit
in
Я конечно извиняюсь, но это как-то ужасно.
Прочитав код, меня немного заклинило.
Ты хочешь прервать
def checkBlackCount (self, extraData):
        countFlag = False
        for i in range(11): # Ты хочешь прервать тут ?
            for j in range(11):
                figure = self.field[i][j]
                if figure == 1:
                    countFlag = True
        if countFlag == False:
            extraData['win'] = True

Посмотри в сторону try https://docs.python.org/2/tutorial/errors.html#handling-exceptions
sypper-pit
4kpt_II
За global бил бы по рукам
Ну иногда требуется, просто тут непонятно было, что именно хочет человек.
4kpt_II
Если требуется, значит что-то не то в коде. Просто поверьте и примите как данность
Budulianin
Ну или фишечку смотри:

from itertools import chain
>>> i  = chain(*lst)
>>> for elem in i:
...     if elem == 3:
...         break
in
Я не могу взяться за один язык потому что у меня клиент серверный проект, а nodejs я не хочу сейчас трогать. Я устал от javascriptа на клиенте. Python очень хороший язык, жаль что нет достаточного времени чобы сначала побольше почитать о питон и только потом что-то на нем писать.
sypper-pit
Да я знаю, про неправильность использования глобальных переменных, но иногда нужно вытягивать значения из 2го цикла на верх, приходится думать или вкладываем в еще в цикл функции или по быстрому в глобал бросить.
in
Budulianin
Ну или фишечку смотри
спасибо, это уже интереснее
Budulianin
def check_black_count(self, extra_data):
    for elem in chain(*self.field):
        if elem == 1:
            break
    else:
        extra_data['win'] = True

Мы пишем CamelCase только для классов.
py.user.next
in
def checkBlackCount(self, extraData):
        countFlag = False
        for i in range(11):
            for j in range(11):
                figure = self.field[i][j]
                if figure == 1:
                    countFlag = True
        if countFlag == False:
            extraData['win'] = True

def checkBlackCount (self, extraData):
    countFlag = False
    try:
        for i in range(11):
            for j in range(11):
                figure = self.field[i][j]
                if figure == 1:
                    countFlag = True
                    raise StopIteration
    except StopIteration:
        pass
    if countFlag == False:
        extraData['win'] = True

Это почти не меняя кода. Часто нужно сохранять код, какой бы он ни был, а рефакторинг проводить потом, уделив этому достаточно времени.


Budulianin
Ну или фишечку смотри:
Там есть itertools.chain.from_iterable()

>>> import itertools
>>> ch = itertools.chain.from_iterable([[1, 2, 3], [4, 5, 6]])
>>> for i in ch:
...   print(i)
... 
1
2
3
4
5
6
>>>

Если представить, что у него матрица размерностью 1000000x1000000, то распаковка займёт какое-то время. Поэтому существует вариант без распаковки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB