Форум сайта python.su
Доброго вечера.
Не работает цикл. Эклипс выдает ошибку:
Traceback (most recent call last):Не совсем понимаю, в чем именно я не права. Идея была в том, чтобы перебрать все строки и все столбцы двумя строчками “ for i in Kozl.col_values(k):
File “D:\01fxcv\eclipse_works\test_1\test3.py”, line 26, in <module>
for i in Kozl.col_values(k):
File “D:\01fxcv\xlrd-1.0.0-py2.py3-none-any.whl\xlrd\sheet.py”, line 531, in col_values
IndexError: list index out of range
for i in Kozl.col_values(j): r_name = Kozl.row_values(j)[0] sheet = workbook.add_sheet('%s' % r_name) k = 1 m = 1 for i in Kozl.col_values(k): for i in Kozl.row_values(m): akt = Kozl.row_values(k)[1] if akt == '<NPI': akt = 0 elif akt == '-': continue else: pass akt_r = Kozl.row_values(j)[1] if akt_r == '<NPI': akt_r = 0 elif akt_r == '-': continue else: pass vek = akt / akt_r sheet.write(m, k, vek) m = m + 1 k = k + 1 j = j + 1
Отредактировано angeline (Ноя. 20, 2016 23:23:07)
Офлайн
angeline
у вас переменная одна и та же переменная i используется в двух циклах.
конструкцию
else: pass
Офлайн
JOHN_16спасибо за замечание!
angelineу вас переменная одна и та же переменная i используется в двух циклах. конструкцию
for i in Kozl.col_values(j): r_name = Kozl.row_values(j)[0] sheet = workbook.add_sheet('%s' % r_name) k = 1 m = 1 #print Kozl.row_values(m) for l in Kozl.col_values(k): for h in Kozl.row_values(m): akt = Kozl.row_values(k)[1] if akt == '<NPI': akt = 0 elif akt == '-': continue else: pass akt_r = Kozl.row_values(j)[1] if akt_r == '<NPI': akt_r = 0 elif akt_r == '-': continue vek = akt / akt_r sheet.write(m, k, vek) m = m + 1 k = k + 1 j = j + 1 workbook.save("d:/01fxcv/pythonchik/final_complete.xls")
Traceback (most recent call last):
File “D:\01fxcv\eclipse_works\test_1\test33.py”, line 26, in <module>
for h in Kozl.row_values(m):
File “D:\01fxcv\xlrd-1.0.0-py2.py3-none-any.whl\xlrd\sheet.py”, line 480, in row_values
IndexError: list index out of range
Офлайн
angelineEclipse вообще для Java сделана. Всё остальное там не очень работает и может врать, поэтому надо ставить PyCharm со студенческой лицензией (бесплатной).
Не работает цикл. Эклипс выдает ошибку:
angelineЭто говорит о том, что там нет столько элементов, сколько кажется, что должно быть. В таких случаях надо выводить весь список на экран (через print), чтобы в этом убедиться.for h in Kozl.row_values(m):
File “D:\01fxcv\xlrd-1.0.0-py2.py3-none-any.whl\xlrd\sheet.py”, line 480, in row_values
IndexError: list index out of range
Отредактировано py.user.next (Ноя. 21, 2016 04:21:18)
Офлайн
for i in Kozl.col_values(j):
r_name = Kozl.row_values(j)[0]
sheet = workbook.add_sheet('%s' % r_name)
k = 1
m = 1
Офлайн
IceIsNice
А разве тут не идет сброс значения переменных k,m на каждом шаге?
IceIsNice
и еще вроде как добавляется новый лист в файле? или это так и задумано в глобальном масштабе?
Офлайн
Ну я про внешний и писал. Возможно так и нужно, мы ведь не знаем какие условия в целом, может там нужно на каждый лист какие-то данные вносить.
Кстати тут возможно даже не в коде дело, оставлю ссылку на возможности excel. В excel количество листов регулируется только оперативной памятью, а вот количество строк и столбцов ограничено.
https://support.office.com/ru-ru/article/%D0%A1%D0%BF%D0%B5%D1%86%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8-%D0%B8-%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-Excel-16c69c74-3d6a-4aaf-ba35-e6eb276e8eaa?ui=ru-RU&rs=ru-RU&ad=RU
Офлайн