def __init__(self, nome, idade, altura):
        """Construtor que recebe por parâmetro um nome(string), uma idade(int) e uma
         altura(float) da pessoa"""

        try:
            if verificar_nome(nome):
                self.__nome = str(nome).strip().title()

                if not (type(idade) == bool) and not (type(altura) == bool):
                    if not (type(idade) == float):
                        if int(idade) >= 0 and float(altura) > 0:

                            self.__idade = int(idade)
                            self.__altura = float("{:.2f}".format(
                                float(altura)))

                        else:
                            raise ValueError

                    else:
                        raise ValueError

                else:
                    raise ValueError

            else:
                raise ValueError

        except ValueError:
            print("\nValores inválidos")
            exit(1)
コード例 #2
0
    def remove_pessoa(self, nome):
        """Remove a pessoa de acordo com o nome passo por parâmetro"""

        if verificar_nome(nome):

            nova_lista = []

            removido = False

            for posicao in range(len(self.__pessoas)):

                if nome.strip().title() == self.__pessoas[posicao].get_nome():
                    removido = True

                else:
                    nova_lista.append(self.__pessoas[posicao])

            if not removido:
                print("\nNenhuma pessoa encontrada com esse nome")

            else:
                self.__pessoas = nova_lista

        else:
            print(f"\nNome inválido")
    def set_nome(self, nome_novo):
        """Recebe um valor do tipo string que irá ser o novo valor do atributo de instância 'nome'"""

        if verificar_nome(nome_novo):
            self.__nome = str(nome_novo).strip().title()

        else:
            print("Nome inválido")
コード例 #4
0
    def nome(self, novo_nome):
        """Recebe um valor que irá ser o novo valor do atributo de instância 'nome'"""

        if verificar_nome(novo_nome):
            self.__nome = novo_nome

        else:
            print("\nNome inválido")
def inserir_alunos(arquivo):
    """Função que recebe o caminho/nome de arquivo e insere no mesmo
    os dados dos alunos fornecidos pelo usuário"""

    try:
        with open(arquivo, "a", encoding="utf-8") as insercao:
            matricula = abs(int(input("\nInsira a matrícula dos aluno: ")))

            existe = False

            with open(arquivo, "r", encoding="utf-8") as leitura:
                informacoes = leitura.read().strip().splitlines()
                informacoes = [infor.split(" - ") for infor in informacoes]

                for linha in informacoes:
                    if int(linha[0]) == matricula:
                        existe = True

            if not existe:
                sobrenome = str(input("Insira o sobrenome do aluno: ")).strip().title()

                if verificar_nome(sobrenome):
                    dd = abs(int(input("Insira o dia de nascimento do aluno: ")))
                    mm = abs(int(input("Insira o mês de nascimento do aluno: ")))
                    aaaa = abs(int(input("Insira o ano de nasicmento do aluno: ")))

                    data_valida = verificar_data(dd, mm, aaaa)

                    if data_valida:
                        dia = str(dd) if len(str(dd)) > 1 else "0"+str(dd)
                        mes = str(mm) if len(str(mm)) > 1 else "0" + str(mm)
                        ano = str(aaaa)

                        data = f"{dia}/{mes}/{ano}"

                        insercao.write(f"{matricula} - {sobrenome.split()[-1]} - {data}\n")

                    else:
                        print("\nA data de nascimento é inválida!")

                else:
                    print("\nO sobrenome é inválido!")

            else:
                print("\nA matrícula informada já existe!")

    except ValueError:
        print("\nOs valores informados são inválidos!")

    except FileNotFoundError:
        print("\nO programa não possui permissão para criar um diretório/pasta!")

    except OSError:
        print("\nO SO não aceita caracteres especiais em nomes de arquivos!")

    except IndexError:
        print("\nO modo que as informações se encontram no texto é inválido!")
    def busca_pessoa(self, nome):
        """Retorna a posição onde se encontra a pessoa com o nome passado por parâmetro"""

        if verificar_nome(nome):
            for posicao in range(len(self.__pessoas)):
                if nome.strip().title() == self.__pessoas[posicao].get_nome():
                    return f"\n{posicao}"

            return "\nNenhuma pessoa encontrada com esse nome"

        return "\nNome inválido"
コード例 #7
0
    def __init__(self, nome, endereco, telefone):
        """Construtor que recebe um nome, endereço e telefone da pessoa,
        verificando se os mesmos são válidos ou não"""

        if verificar_nome(nome) and verificar_endereco(
                endereco) and verificar_telefone(telefone):
            self.__nome = nome.strip().title()
            self.__telefone = telefone if isinstance(
                telefone, int) else telefone.strip()
            self.__endereco = endereco.strip().title()

        else:
            print("\nValores inválidos!")
            exit(1)
コード例 #8
0
    def cor(self, nova_cor):
        """Recebe um valor que irá ser o novo valor do atributo de instância 'cor'"""

        try:
            if type(nova_cor) == str and verificar_nome(nova_cor):
                if self.__cor.strip() == "":
                    self.__cor = nova_cor.strip().title()

                else:
                    print("\nCor já definida")

            else:
                raise ValueError

        except ValueError:
            print("\nCor inválida")
    def nome(self, novo_valor):

        try:

            if type(novo_valor) == str:

                if verificar_nome(novo_valor) and novo_valor.strip() != "":
                    self.__nome = novo_valor

                else:
                    raise ValueError

            else:
                raise ValueError

        except ValueError:
            print("\nNome inválido")
コード例 #10
0
    def __init__(self, marca, modelo, cor):
        """Construtor que recebe a marca, modelo e cor do veiculo, verificando
        se os mesmos são válidos ou não"""

        try:
            if type(marca) == str and type(modelo) == str and type(cor) == str:
                self.__marca = marca.strip().title()
                self.__modelo = modelo.strip().title()

                if verificar_nome(cor):
                    self.__cor = cor.strip().title()

                else:
                    print("\nCor inválida")

            else:
                raise ValueError

        except ValueError:
            print("\nValores inválidos")
            exit(1)
"""

from verificacao import verificar_nome

try:
    qtd_alunos = int(input("Digite a quantidade de alunos: "))

    nome_alunos = []
    nota_alunos = []
    for aluno in range(qtd_alunos):

        while True:
            nome = str(input(
                f"\nDigite o nome do aluno {aluno+1}: ")).strip().title()

            if verificar_nome(nome):
                # Caso nome fornecido tenha 40 caracteres ou mais, irá pegar apenas os primeiros
                # 40 caracteres do nome, caso o nome não contenha 40 caracteres ele irá preencher até
                # 40 caracteres usando espaços em branco
                novo_nome = nome[0:40:1] if len(
                    nome) >= 40 else nome + " " * (40 - len(nome))

                # usei o abs() para não aceitar notas negativas
                nota = abs(float(input(f"Digite a nota final do {nome}: ")))

                nome_alunos.append(novo_nome)
                nota_alunos.append(nota)

                break

            else:
コード例 #12
0
def pesquisar_por_nome(arquivo):
    """Função que recebe o caminho/nome do arquivo e de acordo
    com os dados fornecidos pelo usuário imprimi o contato. Caso o
    arquivo não exista o mesmo será criado"""

    try:
        with open(arquivo, "ab") as _:
            pass

        with open(arquivo, "rb") as leitura:
            texto = leitura.read().decode("utf8").strip().splitlines()

            if len(texto) > 0:
                texto = [informacoes.split(";") for informacoes in texto]

                print(f"\n\n{'-' * 49}PESQUISAR POR NOME{'-' * 50}")
                nome = str(input("Digite o nome do contato: ")).strip().title()
                print("-" * 117)

                if verificar_nome(nome):
                    existe = False

                    print(f"\n\n{'-' * 54}CONTATOS{'-' * 55}")

                    for informacoes in texto:
                        if informacoes[1].strip().title() == nome:
                            print(f"{informacoes[0]} - {informacoes[1]} - {informacoes[2]} - {informacoes[3]}"
                                  f"\n{'-' * 117}")

                            existe = True

                    if not existe:
                        print(f"\n{'-' * 117}")

                else:
                    print(f"\n\n{'-' * 56}ERRO{'-' * 57}")

                    print("OS NOMES DOS CONTATOS NÃO CONTÉM CARACTERES ESPECIAIS OU NÚMEROS!")

                    print("-" * 117)

            else:
                print(f"\n\n{'-' * 56}ERRO{'-' * 57}")

                print("O ARQUIVO ESTÁ VAZIO!")

                print("-" * 117)

    except ValueError:
        print("-" * 117)

        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("ERRO AO LER O ARQUIVO!")
        print("-" * 117)

    except FileNotFoundError:
        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("O PROGRAMA NÃO POSSUI PERMISSÃO PARA CRIAR UM DIRETÓRIO/PASTA!")
        print("-" * 117)

    except OSError:
        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("O SO NÃO ACEITA CARACTERES ESPECIAIS EM NOMES DE ARQUIVOS!")
        print("-" * 117)

    except IndexError:
        print(f"\n{'-' * 117}")

        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("O MODO QUE AS INFORMAÇÕES SE ENCONTRAM NO TEXO É INVÁLIDO!")
        print("-" * 117)
コード例 #13
0
def inserir(arquivo):
    """Função que recebe o caminho/nome do arquivo e insere no mesmo os dados
    dos contatos informados pelo usuário. Caso o arquivo não exista o mesmo
    será criado"""

    try:
        with open(arquivo, "ab") as insercao:
            print(f"\n\n{'-' * 54}INSERÇÃO{'-' * 55}")

            cod = abs(int(input("Digite o identificador(código) do contato: ")))

            print("-" * 117)

            codigo_existe = False

            with open(arquivo, "rb") as leitura:
                informacoes = leitura.read().decode("utf8").strip().splitlines()
                informacoes = [infor.split(";") for infor in informacoes]

                for linha in informacoes:
                    if int(linha[0]) == cod:
                        codigo_existe = True

            if codigo_existe:
                print(f"\n\n{'-' * 56}ERRO{'-' * 57}")

                print("O IDENTIFICADOR(CÓDIGO) JÁ EXISTE!")

                print("-" * 117)

            else:
                nome = str(input("Digite o nome do contato: ")).strip().title()
                print("-" * 117)

                if verificar_nome(nome):
                    telefone = str(input(f"Digite o número do telefone de {nome}: "))
                    print("-" * 117)

                    if verificar_telefone(telefone):
                        mm = abs(int(input(f"Digite o mês do aniversário de {nome}: ")))
                        print("-" * 117)

                        dd = abs(int(input(f"Digite o dia do aniversário de {nome}: ")))
                        print("-" * 117)

                        if ((mm > 0) and (mm < 13)) and ((dd > 0) and (dd < 32)):
                            mes = str(mm)
                            dia = str(dd)

                            if len(mes) == 1:
                                mes = "0"+mes

                            if len(dia) == 1:
                                dia = "0"+dia

                            insercao.write(f"{cod};{nome};{telefone};{dia}/{mes}\n".encode("utf8"))

                            print(f"\n\n{'-' * 53}INFORMAÇÃO{'-' * 54}")

                            print("CONTATO INSERIDO COM SUCESSO!")

                            print("-" * 117)

                        else:
                            print(f"\n\n{'-' * 56}ERRO{'-' * 57}")

                            print("DATA INVÁLIDA(VALORES FORA DO INTERVALO PERMITIDO)!")

                            print("-" * 117)

                    else:
                        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")

                        print("TELEFONE INVÁLIDO!")

                        print("-" * 117)

                else:
                    print(f"\n\n{'-' * 56}ERRO{'-' * 57}")

                    print("NOME INVÁLIDO!")

                    print("-" * 117)

    except ValueError:
        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("ERRO AO RECEBER OS DADOS DO USUÁRIO OU AO LER O ARQUIVO!")
        print("-" * 117)

    except FileNotFoundError:
        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("O PROGRAMA NÃO POSSUI PERMISSÃO PARA CRIAR UM DIRETÓRIO/PASTA!")
        print("-" * 117)

    except OSError:
        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("O SO NÃO ACEITA CARACTERES ESPECIAIS EM NOMES DE ARQUIVOS!")
        print("-" * 117)

    except IndexError:
        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("O MODO QUE AS INFORMAÇÕES SE ENCONTRAM NO TEXO É INVÁLIDO!")
        print("-" * 117)
コード例 #14
0
"""
23) Escreva um programa que leia a profissão e o tempo de serviço (em anos)
de cada um dos 5 funcionários de uma empresa e armazene-os no arquivo "emp.txt".
Cada linha do arquivo corresponde aos dados de um funcionário.
"""

from verificacao import verificar_nome

try:
    with open("arquivos/emp.txt", "w", encoding="utf-8") as arquivo:
        for i in range(5):
            profissao = str(
                input("Digite a profissão do funcionário: ")).strip().title()

            if verificar_nome(profissao):
                tempo_servico = abs(
                    int(
                        input(
                            "Digite o tempo de serviço do funcionário(em anos): "
                        )))
                print()

                arquivo.write(f"{profissao} - {tempo_servico} anos\n")

            else:
                print(
                    "\nO nome da profissão não pode conter caracteres especiais ou números!"
                )

    print("Informações inseridas no arquivo!")
コード例 #15
0
def inserir_notas_alunos(arquivo):
    """Função que recebe o caminho/arquivo e insere no mesmo os dados
    dos alunos e as notas informadas pelo usuário. Caso o arquivo não exista o mesmo
    será criado"""

    try:

        with open(arquivo, "a", encoding="utf-8") as insercao:
            print(f"\n\n{'-' * 54}INSERÇÃO{'-' * 55}")

            cod = abs(int(input("Insira o identificador(código) do aluno: ")))

            print("-" * 117)

            codigo_existe = False

            with open(arquivo, "r", encoding="utf-8") as leitura:

                texto = leitura.read().strip().splitlines()

                texto = [informacao.split(";") for informacao in texto]

                for linha in texto:

                    if cod == int(linha[0]):
                        codigo_existe = True

            if not codigo_existe:
                nome = str(input("Insira o nome do aluno: ")).strip().title()
                print("-" * 117)

                if verificar_nome(nome):

                    nota1 = float(input("Insira a primeira nota do aluno: "))
                    print("-" * 117)

                    nota2 = float(input("Insira a segunda nota do aluno: "))
                    print("-" * 117)

                    nota3 = float(input("Insira a terceira nota do aluno: "))
                    print("-" * 117)

                    insercao.write(
                        f"{cod};{nome};{nota1} - {nota2} - {nota3}\n")

                else:
                    print(f"\n\n{'-' * 56}ERRO{'-' * 57}")

                    print("NOME INVÁLIDO!")

                    print("-" * 117)

            else:
                print(f"\n\n{'-' * 56}ERRO{'-' * 57}")

                print("IDENTIFICADOR(CÓDIGO) JÁ EXISTENTE!")

                print("-" * 117)

    except ValueError:
        print("-" * 117)

        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("ERRO AO RECEBER OS DADOS DO USUÁRIO OU AO LER O ARQUIVO!")
        print("-" * 117)

    except FileNotFoundError:
        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("O PROGRAMA NÃO POSSUI PERMISSÃO PARA CRIAR UM DIRETÓRIO/PASTA!")
        print("-" * 117)

    except OSError:
        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("O SO NÃO ACEITA CARACTERES ESPECIAIS EM NOMES DE ARQUIVOS!")
        print("-" * 117)

    except IndexError:
        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("O MODO QUE AS INFORMAÇÕES SE ENCONTRAM NO TEXO É INVÁLIDO!")
        print("-" * 117)
コード例 #16
0
"""
13) Faça um programa que permita que o usuário entre com diversos nomes e telefone
para cadastro, e crie um arquivo com essas informações, uma por linha. O usuário
finaliza a entrada com '0' para o telefone.
"""

from verificacao import verificar_nome, verificar_telefone

try:
    while True:
        nome = str(input("Digite um nome: ")).strip().title()

        if verificar_nome(nome) and len(nome) > 0:
            telefone = str(input("Digite um número de telefone: ")).strip()
            print()

            if verificar_telefone(telefone):
                with open("arquivos/lista_telefonica.csv",
                          "a",
                          encoding="utf-8") as arquivo:
                    if telefone != '0':
                        informacoes = nome + ";" + telefone
                        arquivo.write(informacoes + "\n")

                    else:
                        break

            else:
                print("Telefone inválido!\n")

        else:
コード例 #17
0
def inserir_registro(arquivo):
    """Função que recebe o caminho/nome de um arquivo existente e
    insere um registro de acordo com os dados fornecidos pelo usuário. Caso
    o arquivo não exista, será impresso uma mensagem na tela informando ao usuário"""

    try:
        arquivo_existe = path.exists(arquivo)

        if arquivo_existe:
            print(f"\n\n{'-' * 55}INSERIR{'-' * 55}")

            codigo_vendedor = abs(int(input("Insira o código do vendedor: ")))
            print(f"{'-' * 117}")

            nome_vendedor = str(
                input("Insira o nome do vendedor: ")).strip().title()
            print(f"{'-' * 117}")

            if verificar_nome(nome_vendedor):
                valor_venda = abs(float(input("Insira o valor da venda: ")))
                print(f"{'-' * 117}")

                mes = abs(
                    int(input("Insira o número referente ao mês da venda: ")))
                print(f"{'-' * 117}")

                if (mes >= 1) and (mes <= 12):
                    existe = False

                    with open(arquivo, "r", encoding="utf-8") as verificacao:
                        texto = verificacao.read().strip().splitlines()

                        texto = [
                            informacoes.split(";") for informacoes in texto
                        ]

                        for linha in texto:
                            if codigo_vendedor == int(linha[0]) and mes == int(
                                    linha[3]):
                                existe = True

                    if not existe:
                        with open(arquivo, "a", encoding="utf-8") as insercao:
                            insercao.write(
                                f"{codigo_vendedor};{nome_vendedor};{valor_venda};{mes}\n"
                            )

                        print(f"\n\n{'-' * 53}INFORMAÇÕES{'-' * 53}")
                        print("REGISTRO INSERIDOS COM SUCESSO!")
                        print("-" * 117)

                    else:
                        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
                        print(
                            "EXISTE UM REGISTRO COM OS MESMOS VALORES NO CÓDIGO DO VENDEDOR E MÊS DA VENDA!"
                        )
                        print("-" * 117)

                else:
                    print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
                    print("MÊS INVÁLIDO!")
                    print("-" * 117)

            else:
                print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
                print(
                    "O NOME DO VENDEDOR NÃO PODE CONTER CARACTERES ESPECIAIS OU NÚMEROS!"
                )
                print("-" * 117)

        else:
            print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
            print("O ARQUIVO NÃO EXISTE. PRIMEIRO CRIE O ARQUIVO!")
            print("-" * 117)

    except ValueError:
        print(f"{'-' * 117}")

        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("ERRO AO RECEBER OS DADOS DO USUÁRIO!")
        print("-" * 117)

    except IndexError:
        print(f"\n\n{'-' * 56}ERRO{'-' * 57}")
        print("O MODO QUE AS INFORMAÇÕES SE ENCONTRAM NO TEXO É INVÁLIDO!")
        print("-" * 117)