Пример #1
0
def adicionarponto(pontos):

    coords = []
    moldura.superior()
    imprime.frase('ADICIONAR PONTO DE COLETA')
    imprime.frase('')
    imprime.frase('ATENÇÃO! Não utilize acentos!')
    moldura.inferior()
    nome = str(input('Digite o nome do local: '))
    print('')
    print(
        'Digite como abaixo, sem espaços e somente os reciclaveis que o local aceita.'
    )
    print('metal,plastico,vidro,papel,oleo,eletronico,madeira,borracha,isopor')
    rec = str(input('Digite os reciclaveis que o local aceita: '))
    reciclaveis = rec.split(',')
    print('')
    coords.append(float(input('Digite a latitude: ')))
    coords.append(float(input('Digite a longitude: ')))
    print('')
    data = pontos
    data['pontos'].append({
        'nome': nome,
        'aceita': reciclaveis,
        'coordenadas': coords
    })
    with open('data/pontos_coleta.json', 'w') as outfile:
        json.dump(data, outfile, indent=4)

    moldura.superior()
    imprime.frase('PONTO ADICIONADO!')
    moldura.inferior()
Пример #2
0
def menu():
    moldura.superior()
    texto('MENU')
    texto('')
    texto(
        'Aqui você pode escolher uma opção para navegar pelo programa. Basta digitar a opção que deseja e apertar Enter.'
    )
    texto('')
    texto('>> Saber mais sobre os materiais reciclaveis')
    frase('    1 - Metal')
    frase('    2 - Plástico')
    frase('    3 - Papel')
    frase('    4 - Vidro')
    frase('    5 - Isopor')
    frase('    6 - Madeira')
    frase('    7 - Borracha')
    frase('    8 - Óleo de cozinha')
    frase('    9 - Lixo Eletrônico')
    texto('>> Dados dos pontos de coleta')
    frase('   11 - Ver ponto de coleta mais próximo por material de coleta')
    frase('   12 - Ver pontos de coleta num raio por material de coleta')
    frase('   13 - Ver todos os pontos de coleta por material de coleta')
    frase('   14 - Adicionar ponto de coleta')
    frase('   15 - Adicionar pontos de coleta em massa')
    texto('')
    frase('    0 - Sair do programa')
    moldura.inferior()
Пример #3
0
def titulo():
    moldura.superior()
    print('│ ' + ' ' * 25 +
          '███  ███  ███  █  ███  █    ███  █ █  ███  █  ███' + ' ' * 25 + '│')
    print('│ ' + ' ' * 25 +
          '█ █  █    █    █  █    █    █ █  █ █  █    █  █  ' + ' ' * 25 + '│')
    print('│ ' + ' ' * 25 +
          '██   ███  █    █  █    █    ███  █ █  ███  █  ███' + ' ' * 25 + '│')
    print('│ ' + ' ' * 25 +
          '█ █  █    █    █  █    █    █ █  █ █  █    █    █' + ' ' * 25 + '│')
    print('│ ' + ' ' * 25 +
          '█ █  ███  ███  █  ███  ███  █ █   █   ███  █  ███' + ' ' * 25 + '│')
    print('╞' + '═' * 100 + '╡')
Пример #4
0
def maisproximo(coletas):
    moldura.superior()
    imprime.frase('PONTO DE COLETA MAIS PRÓXIMO')
    imprime.frase('')
    imprime.frase(
        'Se quiser saber como encontrar coordenadas acesse: "support.google.com/maps/answer/18539"'
    )
    imprime.frase('Exemplo: ("-22.926488,-47.037734")')
    moldura.inferior()
    coord = input('Digite a sua latitude e longitude como no formato acima: ')
    coord = coord.split(',')

    escolhidos = imprime.escolhematerial()

    moldura.superior()
    imprime.frase('PONTO DE COLETA')
    moldura.inferiorDuplo()
    flag = False
    menordistancia = -1

    #procura pelo ponto com menor distancia e grava as coordenadas dele para imprimir depois
    for p in coletas['pontos']:
        distancia = (6371 * acos(
            cos(radians(float(coord[0]))) *
            cos(radians(float(p['coordenadas'][0]))) * cos(
                radians(float(coord[1])) - radians(float(p['coordenadas'][1])))
            + sin(radians(float(coord[0]))) *
            sin(radians(float(p['coordenadas'][0])))))
        if distancia < menordistancia or menordistancia == -1:
            for k in escolhidos:
                if (k in p['aceita'] or k == 'tudo'):
                    menordistancia = distancia
                    menorcoord = p['coordenadas'][:]

    #encontra o ponto que achamos e imprime ele
    for m in coletas['pontos']:
        if float(m['coordenadas'][0]) == float(menorcoord[0]) and float(
                m['coordenadas'][1]) == float(menorcoord[1]):
            imprime.frase('')
            imprime.frase('')
            imprime.frase(m['nome'])
            for k in m['aceita']:
                imprime.frase(' • ' + k)
            imprime.frase('')
            imprime.frase(' Latitude: ' + str(m['coordenadas'][0]))
            imprime.frase(' Longitude: ' + str(m['coordenadas'][1]))
            imprime.frase(' Distância: ' + str(round(menordistancia, 2)) +
                          ' km')
Пример #5
0
def escolhematerial():

    moldura.superior()
    texto(
        'Digite os materiais reciclaveis que deseja pesquisar digitando os numeros que quer separados por uma virgula.'
    )
    texto('Exemplo com metal, papel e madeira: Digite "1,3,6"')
    frase(' 1 - Metal')
    frase(' 2 - Plástico')
    frase(' 3 - Papel')
    frase(' 4 - Vidro')
    frase(' 5 - Isopor')
    frase(' 6 - Madeira')
    frase(' 7 - Borracha')
    frase(' 8 - Óleo de cozinha')
    frase(' 9 - Lixo Eletrônico')
    frase('10 - Todos os tipos de materiais')
    moldura.inferior()
    resposta = input('Digite o que deseja: ')

    #pega a string resposta e divide em uma lista cortando as "," e criando um elemento para cada divisão
    escolha = resposta.split(',')

    #para cada numero digitado substitui ele pelo material desejado
    for i in range(len(escolha)):
        if int(escolha[i]) == 1:
            escolha[i] = 'metal'
        elif int(escolha[i]) == 2:
            escolha[i] = 'plastico'
        elif int(escolha[i]) == 3:
            escolha[i] = 'papel'
        elif int(escolha[i]) == 4:
            escolha[i] = 'vidro'
        elif int(escolha[i]) == 5:
            escolha[i] = 'isopor'
        elif int(escolha[i]) == 6:
            escolha[i] = 'madeira'
        elif int(escolha[i]) == 7:
            escolha[i] = 'borracha'
        elif int(escolha[i]) == 8:
            escolha[i] = 'oleo'
        elif int(escolha[i]) == 9:
            escolha[i] = 'eletronico'
        elif int(escolha[i]) == 10:
            escolha[i] = 'tudo'

    return escolha
Пример #6
0
def reciclaveis(data, produto):
    for p in data['reciclaveis']:
        if p['material'] == produto:
            moldura.superior()
            imprime.texto(p['material'].upper())
            imprime.texto('Tempo de Degradação: ' + p['tempo_degradacao'])
            imprime.texto('')
            imprime.texto(p['resumo'])
            imprime.texto('')
            imprime.texto('PODEMOS RECICLAR:')
            for i in p['reciclaveis']:
                imprime.texto('✔  ' + i)
            imprime.texto('')
            imprime.texto('NÃO PODEMOS RECICLAR:')
            for i in p['nao_reciclaveis']:
                imprime.texto('✘  ' + i)
            moldura.inferiorDuplo()
Пример #7
0
def vertodos(coletas):

    escolhidos = imprime.escolhematerial()

    moldura.superior()
    imprime.frase('PONTO DE COLETA')
    moldura.inferiorDuplo()
    for m in coletas['pontos']:
        for k in escolhidos:
            if (k in m['aceita'] or k == 'tudo'):
                imprime.frase('')
                imprime.frase('')
                imprime.frase(m['nome'])
                for k in m['aceita']:
                    imprime.frase(' • ' + k)
                imprime.frase('')
                imprime.frase(' Latitude: ' + str(m['coordenadas'][0]))
                imprime.frase(' Longitude: ' + str(m['coordenadas'][1]))
Пример #8
0
def adicionarpontomassa(pontos):
    data = pontos
    qtde = 0
    moldura.superior()
    imprime.frase('ADICIONAR PONTOS DE COLETA EM MASSA')
    imprime.frase('')
    imprime.frase('ATENÇÃO! Não utilize acentos!')
    imprime.frase(
        'Faça como no exemplo abaixo e seus deados serão todos adicionados!')
    imprime.frase(
        'nome do local;metal,papel;-58.2345,-47.4839/nome do local;metal,plastico;-58.2345,-47.4839'
    )
    imprime.frase('')
    imprime.frase(
        "Preste atenção que se utiliza ';' entre os dados e '/' entre pontos diferentes"
    )
    imprime.frase(
        'Utilize espaços SOMENTE no nome do local e use o padrão correto para digitar as coordenadas'
    )
    imprime.frase('')
    imprime.frase(
        'Reciclaveis válidos: metal, plastico, papel, vidro, borracha, oleo, eletronico, madeira e isopor'
    )
    moldura.inferior()
    lista = input('Digite a seguir a sua lista de pontos: ')
    dados = lista.split('/')

    for i in dados:
        ponto = i.split(';')
        ponto[1] = ponto[1].split(',')
        ponto[2] = ponto[2].split(',')
        data['pontos'].append({
            'nome': ponto[0],
            'aceita': ponto[1],
            'coordenadas': ponto[2]
        })
        qtde += 1

    with open('data/pontos_coleta.json', 'w') as outfile:
        json.dump(data, outfile, indent=4)

    moldura.superior()
    imprime.frase(str(qtde) + ' PONTOS ADICIONADO!')
    moldura.inferior()
Пример #9
0
def pontosraio(coletas):
    moldura.superior()
    imprime.frase('PONTOS DE COLETA EM UM RAIO')
    imprime.frase('')
    imprime.frase(
        'Se quiser saber como encontrar coordenadas acesse: "support.google.com/maps/answer/18539"'
    )
    imprime.frase('Exemplo: ("-22.926488,-47.037734")')
    moldura.inferior()
    coord = input('Digite a sua latitude e longitude como no formato acima: ')
    coord = coord.split(',')
    raio = float(input('Agora digite o raio (em km) que deseja: '))

    escolhidos = imprime.escolhematerial()

    moldura.superior()
    imprime.frase('PONTOS DE COLETA')
    moldura.inferiorDuplo()
    flag = False
    for p in coletas['pontos']:
        distancia = (6371 * acos(
            cos(radians(float(coord[0]))) *
            cos(radians(float(p['coordenadas'][0]))) * cos(
                radians(float(coord[1])) - radians(float(p['coordenadas'][1])))
            + sin(radians(float(coord[0]))) *
            sin(radians(float(p['coordenadas'][0])))))
        for i in escolhidos:
            if (float(distancia) <= raio) and (i in p['aceita']
                                               or i == 'tudo'):
                flag = True
        if flag:
            imprime.frase('')
            imprime.frase('')
            imprime.frase(p['nome'])
            for k in p['aceita']:
                imprime.frase(' • ' + k)
            imprime.frase('')
            imprime.frase(' Latitude: ' + str(p['coordenadas'][0]))
            imprime.frase(' Longitude: ' + str(p['coordenadas'][1]))
            imprime.frase(' Distância: ' + str(round(distancia, 2)) + ' km')
        flag = False