Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 20, 2016 21:51:24

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

Не работает цикл

Доброго вечера.
Не работает цикл. Эклипс выдает ошибку:

Traceback (most recent call last):
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(k):
for i in Kozl.row_values(m):”
Подскажите, пожалуйста, как это можно исправить?
 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)

Офлайн

#2 Ноя. 20, 2016 22:49:05

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Не работает цикл

angeline
у вас переменная одна и та же переменная i используется в двух циклах.
конструкцию

 else:
    pass
не надо писать, она не обязательная для if условия



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Ноя. 20, 2016 23:25:54

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

Не работает цикл

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

Офлайн

#4 Ноя. 21, 2016 04:19:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9993
Репутация: +  857  -
Профиль   Отправить e-mail  

Не работает цикл

angeline
Не работает цикл. Эклипс выдает ошибку:
Eclipse вообще для Java сделана. Всё остальное там не очень работает и может врать, поэтому надо ставить PyCharm со студенческой лицензией (бесплатной).

angeline
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
Это говорит о том, что там нет столько элементов, сколько кажется, что должно быть. В таких случаях надо выводить весь список на экран (через print), чтобы в этом убедиться.
Можешь вместо числа m попередавать туда напрямую 1, 2, 3 и так далее, пока ошибка не возникнет.
Да и, может, число m просто неправильное там изначально, его тоже можно на экран выводить, чтобы видеть.



Отредактировано py.user.next (Ноя. 21, 2016 04:21:18)

Офлайн

#5 Ноя. 28, 2016 15:26:08

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

Не работает цикл

 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

А разве тут не идет сброс значения переменных k,m на каждом шаге? и еще вроде как добавляется новый лист в файле? или это так и задумано в глобальном масштабе?

p.s. сильно не бейте

Офлайн

#6 Ноя. 29, 2016 00:01:37

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Не работает цикл

IceIsNice
А разве тут не идет сброс значения переменных k,m на каждом шаге?

Каждом шаге чего? Внешнего цикла - да, внутреннего - активно мимикрируют.

IceIsNice
и еще вроде как добавляется новый лист в файле? или это так и задумано в глобальном масштабе?

А кто ее поймет, загадочную женскую душу… Надо ей так.

Офлайн

#7 Ноя. 29, 2016 13:43:32

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

Не работает цикл

Ну я про внешний и писал. Возможно так и нужно, мы ведь не знаем какие условия в целом, может там нужно на каждый лист какие-то данные вносить.

Кстати тут возможно даже не в коде дело, оставлю ссылку на возможности 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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version