def Par():
     parametros = f_d.inp('o que fazer com os amontados?',
                          ('marcar segundo', 'retirar vazios'))
     op = f_d.inp(parametros,
                  ('confirmar filtro_amontoados', 'comecar novamente'))
     if op == 'confirmar filtro_amontoados':
         return parametros
     if op == 'comecar novamente':
         return Par()
 def Par(caracteristicas):
     parametros = {'segmentosPar': [], 'posicoesPar': []}
     parametros = segmentosPar_(caracteristicas, parametros)
     op = f_d.inp('adicionar caracteristicas para posicoes?', ('s', 'n'))
     if op == 's':
         parametros = posicoesPar_(caracteristicas, parametros)
     op = f_d.inp('adicionar caracteristicas para filtros?', ('s', 'n'))
     if op == 's':
         parametros = filtrosPar_(caracteristicas, parametros)
     op = f_d.inp(parametros,
                  ('confirmar segmentacao', 'comecar novamente'))
     if op == 'confirmar segmentacao':
         return parametros
     if op == 'comecar novamente':
         return Par(caracteristicas)
 def filtrosPar_(caracteristicas, parametros):
     sc = f_d.inp('caracteristicas para filtros:', (caracteristicas))
     st = f_d.inp('modos de segmentar:', ('p1f', 'p1p2f', 'p2m1f'))
     parametros['posicoesPar'].append((sc, st))
     op = f_d.inp(parametros, ('confirmar entrada', 'refazer entrada'))
     if op == 'confirmar entrada':
         op = f_d.inp('adicionar outra caracteristica para filtros?',
                      ('s', 'n'))
         if op == 's':
             return filtrosPar_(caracteristicas, parametros)
         if op == 'n':
             return parametros
     if op == 'refazer entrada':
         parametros['posicoesPar'].pop()
         return filtrosPar_(caracteristicas, parametros)
 def Par(parametroanalise, parametros):
     parametros = filtroPar(parametroanalise, parametros)
     op = f_d.inp(parametros,
                  ('confirmar filtro_tipo', 'comecar novamente'))
     if op == 'confirmar filtro_tipo':
         return parametros
     if op == 'comecar novamente':
         return Par(parametroanalise, [])
    def filtroPar(parametroanalise, parametros):
        opcoes = [
            x[0] for x in parametroanalise[0][1][1]['posicoesPar']
            if 'f' in x[1]
        ]
        opcoes.append('nome')
        caracteristica = f_d.inp('por qual caracteristica filtrar?', opcoes)

        def valores_():
            valores = input('que contenha quais valores? ')
            try:
                valores = [float(v) for v in valores.split(',')]
            except ValueError:
                valores = [v.strip() for v in valores.split(',')]
            print((caracteristica, valores))
            op = f_d.inp(
                'certifique-se que digitou valores correspondentes a caracteristica:',
                ('confirmar', 'repetir'))
            if op == 'confirmar':
                return valores
            if op == 'repetir':
                return valores_()

        valores = valores_()
        tipo = f_d.inp('como filtrar?',
                       ('inclusivo qualquer', 'inclusivo todos',
                        'exclusivo qualquer', 'exclusivo todos'))
        print()
        parametros.append(({caracteristica: valores}, tipo))
        op = f_d.inp(parametros, ('confirmar entrada', 'refazer entrada'))
        if op == 'confirmar entrada':
            op = f_d.inp('adicionar outra caracteristica ao filtro_tipo?',
                         ('s', 'n'))
            if op == 's':
                return filtroPar(parametroanalise, parametros)
            if op == 'n':
                return parametros
        if op == 'refazer entrada':
            parametros.pop()
            return filtroPar(parametroanalise, parametros)
 def valores_():
     valores = input('que contenha quais valores? ')
     try:
         valores = [float(v) for v in valores.split(',')]
     except ValueError:
         valores = [v.strip() for v in valores.split(',')]
     print((caracteristica, valores))
     op = f_d.inp(
         'certifique-se que digitou valores correspondentes a caracteristica:',
         ('confirmar', 'repetir'))
     if op == 'confirmar':
         return valores
     if op == 'repetir':
         return valores_()
 def filtroPar(parametroanalise, parametros):
     opcoes = [
         x[0] for x in parametroanalise[0][1][1]['posicoesPar']
         if 'f' in x[1]
     ]
     opcoes.append('nome')
     opcoes.append('posicao')
     caracteristica = f_d.inp('por qual caracteristica filtrar?', opcoes)
     quantidade = f_d.quantidade_()
     print()
     parametros.setdefault(caracteristica, int(quantidade))
     op = f_d.inp(parametros, ('confirmar entrada', 'refazer entrada'))
     if op == 'confirmar entrada':
         op = f_d.inp(
             'adicionar outra caracteristica ao filtro_quantidade?',
             ('s', 'n'))
         if op == 's':
             return filtroPar(parametroanalise, parametros)
         if op == 'n':
             return parametros
     if op == 'refazer entrada':
         parametros.pop(caracteristica)
         return filtroPar(parametroanalise, parametros)