Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 16, 2016 14:55:31

IceIsNice
Зарегистрирован: 2016-11-14
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор While + If и не правильно работающий else

Суть проблемы такова, оператор 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

Офлайн

#2 Ноя. 16, 2016 15:01:12

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оператор While + If и не правильно работающий else

Уберите для начала все лишние скобки, у вас они где только можно рассованы, глаз устаёт
и напишите минимальный пример, который можно воспроизвести, мы же не знаем, что вы там передаете в функцию



Отредактировано FishHook (Ноя. 16, 2016 15:02:19)

Офлайн

#3 Ноя. 16, 2016 15:03:45

IceIsNice
Зарегистрирован: 2016-11-14
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор While + If и не правильно работающий else

Убрал.

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

Офлайн

#4 Ноя. 16, 2016 15:10:44

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оператор While + If и не правильно работающий else

напишите минимальный пример, который можно воспроизвести, мы же не знаем, что вы там передаете в функцию



Офлайн

#5 Ноя. 16, 2016 15:13:41

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оператор While + If и не правильно работающий else

Да, ваш алгоритм, он забавный
break прерывает цикл (вдруг вы не знали)
у вас ветка if прерывает цикл, и ветка else тоже прерывает
каким образом цикл всегда выполняется только один раз



Офлайн

#6 Ноя. 16, 2016 15:27:40

IceIsNice
Зарегистрирован: 2016-11-14
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор While + If и не правильно работающий else

Break убрал, да знал что он завершает поэтому и запихал туда.
мне и надо что бы он выполнялся всего раз, он должен вернуть одно значение если условие if выполнится, а вот если не выполнится то нужно вернуть другое значение. В этом и заключается проблема, если стоит else то всегда возвращается значение из блока else.

Просто я не знаю как оператор else прицепить к оператору if

Отредактировано IceIsNice (Ноя. 16, 2016 15:30:12)

Офлайн

#7 Ноя. 16, 2016 15:32:12

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оператор While + If и не правильно работающий else

IceIsNice
мне и надо что бы он выполнялся всего раз
А ЗАЧЕМ ВАМ ТОГДА ЦИКЛ?
Цикл, который всегда выполняется только один раз. Вы понимаете, что это чушь?



Офлайн

#8 Ноя. 16, 2016 15:42:14

IceIsNice
Зарегистрирован: 2016-11-14
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор While + If и не правильно работающий else

в общем вся картина, есть 2 файла excel с данными и надо из двух собрать третий файл.
Данные требуются не все, а часть из 1 файла и часть из второго.
Из 1 файла я тупо копирую что нужно, из второго надо найти значения.
Например, если в ячейку В5 надо найди данные из файла2, на основании значения А5, то в вышеописанную функцию передается значение А5 и там в цикле идет сравнение и если сравнение верно тогда возвращается нужное значение, иначе надо вернуть другое значение.
Этот цикл делает просто перебор строк и поиск нужной.

Офлайн

#9 Ноя. 16, 2016 15:50:22

IceIsNice
Зарегистрирован: 2016-11-14
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор While + If и не правильно работающий else

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

Отредактировано IceIsNice (Ноя. 16, 2016 15:50:49)

Офлайн

#10 Ноя. 16, 2016 15:50:40

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оператор While + If и не правильно работающий else

IceIsNice
Этот цикл делает просто перебор строк и поиск нужной.
да как он может что-то перебирать, есть он выполняется один раз и вы его принудительно завершаете в любом случае?

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version