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)
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")
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"
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)
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")
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:
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)
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)
""" 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!")
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)
""" 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:
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)