Algoritmo de Cadastro com Validação de Datas
Por: Luiz Otavio Oliveira Nogueira • 26/3/2019 • Trabalho acadêmico • 3.300 Palavras (14 Páginas) • 216 Visualizações
#!/usr/bin/python3
import struct
print('\nCADASTRO DE FUNCIONARIOS\n========================')
arquivo = open('arq_func.dat', 'wb') # guarda o arquivo que vai ser usado
i = 1
# ----------------------------------------------------------------------------------------------
# ----------------------VALIDAÇÃO DO CÓDIGO ------------------------------------
while True:
ind_grava = True
sairCod = False
print('\n%do. funcionário: \n' % i)
digita = 's'
while "s" == digita or digita == "S":
erro_cpo = False
codigo = input('Código...: ')
if codigo.isdigit(): # Isdigit() retorna False se o valor for negativo
codigo = int(codigo)
if codigo < 1: # Se o código for um inteiro não nulo
erro_cpo = True
else:
# se o codigo for 9999
if codigo == 9999:
sairCod = True
break
else:
erro_cpo = True
digita = '?'
if erro_cpo:
while digita != 's' and digita != 'S' and digita != 'n' and digita != 'N':
digita = input('Código inválido!\nInsira um valor maior que 0 ou digite 9999 para encerrar.\nDeseja digitar novamente? (s/n): ')
while digita != 's' and digita != 'S' and digita != 'n' and digita != 'N':
digita = input('Opção inválida!\nEscolha entre S ou N: ')
if "n" == digita or digita == 'N':
print('Digitação abandonada. ')
ind_grava = False
break
if sairCod: break
# ------------------------------------------------------------------------------------------------------
# -------------------VALIDAÇÃO DO NOME DO USUÁRIO-------------------------------
if ind_grava:
digita = 's'
while "s" == digita or digita == "S":
erro_cpo = False
tipoErro = ""
contLetra = 0
ind_dupl_espc = False
l = 0
nome = input('Nome...: ')
# Testa a primeira letra da string nome.
if nome[0] > "Z" or nome[0] < "A": # Obs. Os caracteres minúscilos(a,b,c...z)
erro_cpo = True # estão após os MAIÚSCULOS(A,B,C...Z) na tabela ASCII
tipoErro = "A primeira letra deve estar em Caixa alta"
# Verifica se a string nome é maior que 30 caracteres OU maior menor que 3
for letra in nome:
contLetra += 1
if contLetra < 3 or contLetra > 30:
erro_cpo = True
tipoErro = "Entre com um nome de no máximo 30 no mínimo 2 caracteres. "
if nome[0] == " " or nome[contLetra - 1] == " ":
erro_cpo = True
tipoErro = "Verifique espaços antes e depois do nome. "
digita = '?'
if erro_cpo:
while digita != 's' and digita != 'S' and digita != 'n' and digita != 'N':
digita = input("Nome inválido!\n" + tipoErro + "\nDeseja digitar novamente? (s/n): ")
while digita != 's' and digita != 'S' and digita != 'n' and digita != 'N':
digita = input('Opção inválida!\nEscolha entre S ou N: ')
if "n" == digita or digita == 'N':
print('Digitação abandonada. ')
ind_grava = False
break
# ------------------------------------------------------------------------------
# ------------------------VALIDAÇÃO DO SALÁRIO----------------------------------
if ind_grava:
digita =
...