Не выходит из цикла

sof07

Новичок
Пользователь
Авг 3, 2020
14
1
3
Здравствуйте! Помогите понять почему не могу выйти из цикла при проверке условия

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

Python:
def teturn(FIRST_SING, dataframe):
    if FIRST_SING == '1':
        NUMBER_GROUP = input('Введите номер группы: ')
        tables_1 = grupboy_namber_group (NUMBER_GROUP = NUMBER_GROUP, dataframe = dataframe)
    
    elif FIRST_SING == '2':
        LN_NAMBER = input('Введите личный номер: ')
        tables_1 = ln (LN_NAMBER = LN_NAMBER, dataframe = dataframe)
    elif FIRST_SING == '3':
        NUMBER_GROUP = input('Введите номер группы: ')
        tables_1 = count_blagodarnost(NUMBER_GROUP = NUMBER_GROUP, dataframe = dataframe)
 
    return(tables_1)

Далее мне нужно пробежаться по всем файлам в папке, сделать для каждого файла необходимую выборку и сохранить в файл Word. для этого у меня есть следующая функция:
она принимает список файлов в папке

Python:
def new_list_group(list_docx):
      
    Name_doc = 'Список поощрений за группу.docx' # склеиваем название файла
    directory_finish = DIRECTORY_SAVE + '\\' + Name_doc # директория куда сохраняем файл
    docfinish = Document() #Создаем пустой документ
    for name in list_docx:
        file_directory = DOCUMENT_1 + '\\' + name  # для каждого документа склеили путь
        prom_DataFrame = dataframe_blagodarnost (file_directory) # DataFrame для каждого файла в каталоге
        mouns = name.split('.') # разбиваем имя файла по разделителю точка
        Mouns_1 = mouns[0] + '.' + mouns[1] # склеиваем заголовок для таблицы
        docfinish.add_heading(Mouns_1, 0) # добавляем заголовок в таблицу (название файла)
        
        
        tables_1 = teturn(FIRST_SING, prom_DataFrame) # запускаем необходимую функцию которая делает нужную выборку
            
        table1 = docfinish.add_table(tables_1.shape[0] + 1, tables_1.shape[1]) #Добавляем таблицу
        table1.style = 'Table Grid'  # Стиль таблицы
 
    
        for j in range(tables_1.shape[-1]):
            table1.cell(0, j).text = tables_1.columns[j]
 
            for i in range(tables_1.shape[0]):
                for j in range(tables_1.shape[-1]):
                    table1.cell(i + 1, j).text = str(tables_1.values[i, j])
  
    docfinish.save(directory_finish) # сохраняем документ

Проблема в следующем: если я запускаю функцию teturn самостоятельно и вывожу ее на печать проблем нет, она выдает мне нужный DataFrame. Но если я ее засовываю в функцию new_list_group (вот сюда : tables_1 = teturn(FIRST_SING, prom_DataFrame) ) происходит следующее:
Программа запрашивает необходимое действие, допустим 1, далее запрашивает номер группы, далее ввожу номер группы и она опять запрашивает номер группы. Помогите разобраться почему так происходит?

Windows 10
python 3.8.6
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
вы функцию запускаете в цикле for по вашим словам он перебирает файлы, сколько файлов (элементов в списке), столько раз она запустится, соответственно столько раз спросит
 
Последнее редактирование:

sof07

Новичок
Пользователь
Авг 3, 2020
14
1
3
вы функцию запускаете в цикле for по вашим словам он перебирает файлы, сколько файлов (элементов в списке), столько раз она запустится, соответственно столько раз спросит
Ага, до самого только что дошло. Не могу теперь сообразить как исправить этот баг, нужно что бы он один раз запрашивал номер группы
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
можно инпуты вынести из функции teturn, таким образом она будет знать что делать заранее и не будет ничего спрашивать
 

sof07

Новичок
Пользователь
Авг 3, 2020
14
1
3
можно инпуты вынести из функции teturn, таким образом она будет знать что делать заранее и не будет ничего спрашивать
можно, но тогда появятся лишние запросы, я так понимаю придется вводить действие, номер группы и личный номер, ну либо оставлять пустым ненужный запрос
 

sof07

Новичок
Пользователь
Авг 3, 2020
14
1
3
можно, но тогда появятся лишние запросы, я так понимаю придется вводить действие, номер группы и личный номер, ну либо оставлять пустым ненужный запрос
Разобрался, все получилось)
 

Форум IT Специалистов