Найти - Пользователи
Полная версия: Оператор While + If и не правильно работающий else
Начало » Python для новичков » Оператор While + If и не правильно работающий else
1 2 3
IceIsNice
Суть проблемы такова, оператор else зацепляется к оператору while, а нужно что бы цеплялся к if.
Отступы делал, цикл падает в ошибку. Без else все работает. Среда PyCharm.

def srch(cell,n):
while (rn_out_sheet[('F'+str(n))].value !=None):

if (rn_out_sheet[('F'+str(n))].value) == cell:
cell = rn_out_sheet[('H'+str(n))].value
break
else:
cell = 'Нет в работе'

n += 1
return cell
FishHook
Уберите для начала все лишние скобки, у вас они где только можно рассованы, глаз устаёт
и напишите минимальный пример, который можно воспроизвести, мы же не знаем, что вы там передаете в функцию
IceIsNice
Убрал.
def srch(cell,n):
while rn_out_sheet['F'+str(n)].value !=None:

if rn_out_sheet['F'+str(n)].value == cell:
cell = rn_out_sheet['H'+str(n)].value
break
else:
cell = 'Нет в работе'
break

n += 1
return cell
FishHook
напишите минимальный пример, который можно воспроизвести, мы же не знаем, что вы там передаете в функцию
FishHook
Да, ваш алгоритм, он забавный
break прерывает цикл (вдруг вы не знали)
у вас ветка if прерывает цикл, и ветка else тоже прерывает
каким образом цикл всегда выполняется только один раз
IceIsNice
Break убрал, да знал что он завершает поэтому и запихал туда.
мне и надо что бы он выполнялся всего раз, он должен вернуть одно значение если условие if выполнится, а вот если не выполнится то нужно вернуть другое значение. В этом и заключается проблема, если стоит else то всегда возвращается значение из блока else.

Просто я не знаю как оператор else прицепить к оператору if
FishHook
IceIsNice
мне и надо что бы он выполнялся всего раз
А ЗАЧЕМ ВАМ ТОГДА ЦИКЛ?
Цикл, который всегда выполняется только один раз. Вы понимаете, что это чушь?
IceIsNice
в общем вся картина, есть 2 файла excel с данными и надо из двух собрать третий файл.
Данные требуются не все, а часть из 1 файла и часть из второго.
Из 1 файла я тупо копирую что нужно, из второго надо найти значения.
Например, если в ячейку В5 надо найди данные из файла2, на основании значения А5, то в вышеописанную функцию передается значение А5 и там в цикле идет сравнение и если сравнение верно тогда возвращается нужное значение, иначе надо вернуть другое значение.
Этот цикл делает просто перебор строк и поиск нужной.
IceIsNice
FishHook
А ЗАЧЕМ ВАМ ТОГДА ЦИКЛ?
Цикл, который всегда выполняется только один раз. Вы понимаете, что это чушь?
Вопрос не в том, зачем мне цикл, мне надо просто вернуть из него одно из двух значений:
1. Значение, если условие в операторе if истинно.
2. Значение, если условие в операторе if ложно.
FishHook
IceIsNice
Этот цикл делает просто перебор строк и поиск нужной.
да как он может что-то перебирать, есть он выполняется один раз и вы его принудительно завершаете в любом случае?

Вы, кажется, взяли себе задачу не по силам, потренируйтесь на чем-нибудь по-проще, без экселя, файлов и прочей отвлекающей фигни. Короче, вам надо задачи порешать для начала.
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