Guanabara, você mudou a história contemporânea da tecnologia na vida de pessoas de baixa renda em um país subdesenvolvido que é o Brasil. Deus tem orgulho de ti!
Eu comecei este curso pq eu queria fazer física e me disseram que era bom ter noção de programação para usar na faculdade. Mas acabou que eu amei tanto programação, que mudei de curso, hoje faço Ciência da Computação na UEL. Obrigado Guanabara!!!
Professor Guanabara, todo início de aula você fala sobre o andamento do curso, outros cursos e sobre outros assuntos e isso dura em média 2 a 3 minutos. Geralmente nos vídeos de outras pessoas eu pulo essas partes imediatamente, mas o seu marketing nessas partes introdutórias é tão bom que eu faço questão de assistir todas. Com isso, consigo aprender até marketing no início dos seus vídeos. Parabéns a você e a toda sua equipe!
Gente, vou deixar uma dica pra quem quiser. > O laço while aceita o comando 'else:', mas ele só se ativa quando o laço termina "naturalmente"; > Assim, se vc usar o comando 'break', não é possível ativar o 'else:', porque o laço estaria terminando de maneira "forçada"; > Como então sair de um laço while sem usar o break?? Você pode usar uma variável de controle de tipo booleano (True or False) > Exemplificando: controle_do_while = True while controle_do_while: [BLOCO DE CÓDIGO] opcao = str(input('Deseja continuar? [S/N]')) if opcao == 'N': controle_do_while = False > Exemplificando acima de forma bem genérica, o laço termina "naturalmente" e você pode acrescentar o 'else:' controle_do_while = True while controle_do_while: [BLOCO DE CÓDIGO] opcao = str(input('Deseja continuar? [S/N]'))
if opcao == 'N': controle_do_while = False else: [BLOCO DE CÓDIGO 2] Espero que isso seja util pra alguem hehe
Coloca os videos do desafio 115 na playlist do mundo 3, mito. Assim o video não fica "perdido". Em tempo, obrigado por essas aulas, Guanabara e parceiros, curso de muita qualidade!
Uma dica é não usar o if para as opções use o comando match, o match se aplica a um variavel, exemplo match num: case 1: print('opção 1') case 2: print('opção 2')
Guanabara, nenhuma das partes do exercício 115 está listada lá na Playlist do Mundo 3. Esses são os únicos vídeos que estão falando por lá. Grande abraço e parabéns novamente pelo excelente trabalho!
Eu fiz essa primeira parte, porém o código do professor Guanarabara ficou melhor. Por isso, estou usando algumas técnicas que ele utilizou e adaptar para minha solução.
show de bola guanabara nota 10! nesse código ai se você der um KeyInterrupt, ele está retornando 0 e caindo no loop infinito denovo, rs eu alterei la no 'LeiaInt' para retornar '3' dai ele cai na opção de encerramento!
Passando aqui para informar que a forma que o Guanabara está passando modularização não é recomendada para criação de sistemas de verdade, mas para fins educacionais não tem problema.
Putz Guanabara, como queria q vc fizesse um curso de C++ tbm. não tem um curso q preste na Udemy igual aos que vc dá aqui. Quase todos ignoram a importância da parte teorica. Honestamente, eu estaria até disposto a pagar!
Eu estou fazendo dois cursos esse de python e um de C++ no canal do Fessor Bruno, ele pode até não ter o jeito que o Guanabara explica, mas explica muito bem
Tá falando bosta, lá tem um monte de curso excelente, inclusive estou empregado na área graças as certificações de lá pq o Guanabara nunca trata de conteúdos avançados
8:39 Por acaso eu consegui criar o programa todo de uma vez, depois corri e funcionou :D No final ajustei a 'interface' no terminal para ficar melhor formatado.
(Comentando antes de ver o vídeo): Eu consegui fazer o menu, tudo bonitinho, cadastrar pessoas em dicionário e lista, mas obviamente não consegui fazer o negócio salvar permanentemente kkkkk vamos ver a resolução pra ver se eu fiz mais ou menos como era esperado!
Eu sei que o tema é Python, mas será que poderia fazer um vídeo sobre Regex no javascript? É um tema muito importante e carente de material bem explicado.
Bom,já estamos no antepenúltimo exercício😢,o tempo passa rápido quando nós divertirmos.. .Fiz o exercício completo antes de ver os vídeos de exercícios ,então saiu de uma forma completamente diferente da do Guanabara.Irei assistir os vídeos para ver a solução do Guanabara,já testei tudo e ta tá tudo certinho,lá no último vídeo de exercício irei colocar a minha solução.
Olá Gustavo Guanabara, comecei a fazer o curso esse ano e, já estou completando o mundo 2 , estou querendo tirar um certificado do mundo um mais ainda está indisponível
Algumas coisas eu não sabia como fazer, aí tive que pesquisar na web, mas fui pensando na lógica e pesquisando como fazia. Cabe mais alguns tratamentos de erro mas de princípio ficou assim. E claro, simplificar o código utilizando a modularização. Na função ver database tem essa repetição de código pois por algum motivo depois da formatação o loop for não estava rodando. cadastro_com_db(): cores = {"vermelho": '\033[0;31m', "verde": '\033[0;32m', "azul-claro": '\033[0;36m', "cinza": '\033[0;37m', "roxo": '\033[0;35m', "amarelo": '\033[0;33m', "termina": '\033[m'} try: with open('database.txt', 'r') as db: db = db except FileNotFoundError: with open('database.txt', 'w') as db: db = db def ver_database(): with open('database.txt', 'r') as db: print(f"{cores['roxo']}{61 * '-'}") if len(db.read()) == 0: print(20 * ' ', 'Não possui Cadastros') print(61 * '-', cores["termina"]) return cadastro_com_db() print(20 * ' ', 'Pessoas Cadastradas') print(61 * '-', cores["termina"]) with open('database.txt', 'r') as db: for linha in db.readlines(): linha = linha.strip() print(f"{cores['azul-claro']}{linha[:linha.find(';')]}".ljust(40), f"{linha[linha.find(';') + 1:]} Anos{cores['termina']}") return cadastro_com_db() def cadastrar_pessoa(): print(f"{cores['roxo']}{61 * '-'}") print(25 * ' ', 'CADASTRO') print(61 * '-', cores["termina"]) nome = input(f'{cores["azul-claro"]}Digite seu nome: ') idade = input('Digite sua idade: ') with open('database.txt', 'a+') as db: # db.seek(0) database = db.read() # if nome != unidecode.unidecode(database): # print('Acentos ou caractéres especiais não são permitidos, tente novamente.') # return cadastrar_pessoa() if nome.lower() in database.lower(): print(f'{cores["vermelho"]}Esse nome já existe, tente novamente.{cores["termina"]}') return cadastrar_pessoa() nome = nome.title() db.write(nome + ';' + idade + ' ') print(f'{cores["verde"]}{nome} foi cadastrado(a) com sucesso.{cores["termina"]}') return cadastro_com_db() # Escolha do usuário print(f"{cores['roxo']}{61 * '-'}") print(22 * ' ', 'Menu Principal') print(61 * '-', cores["termina"]) choice = int(input(f'{cores["azul-claro"]}1 - Ver Tabela de Cadastro' f' 2 - Cadastrar Pessoa' f' 3 - Sair{cores["termina"]}' f' {cores["roxo"]}{61 * "-"}{cores["termina"]}' f' {cores["amarelo"]}Escolha uma ação: {cores["termina"]}')) if choice == 3: print() print(f'{cores["vermelho"]}Saindo', end='') for sec in range(0, 3): time.sleep(1) print('.', end='') print() return elif choice == 1: return ver_database() elif choice == 2: return cadastrar_pessoa() cadastro_com_db()
sistema/lib/interface/__init__.py def cores(cor='sem'): """ → Função para formatação de cores :param cor: a ser aplicada :return: a cor """ cores = { 'sem': '\033[m', # 0 - sem cor 'branco': '\033[1;30m', # 1 - branco 'vermelho': '\033[1;31m', # 2 - vermelho 'verde': '\033[1;32m', # 3 - verde 'amarelo': '\033[1;33m', # 4 - amarelo 'azul': '\033[1;34m', # 5 - azul 'roxo': '\033[1;35m', # 6 - roxo 'magenta': '\033[1;36m', # 7 - magenta 'cinza': '\033[1;37m' # 8 - cinza } return cores[cor] def linha(tm=50, simb='-'): """ → Função para criar uma linha :param tm: tamanho da linha :param simb: símbolo para formação da linha :return: a linha """ return print(simb * tm) def cabecalho(texto, tm=50): """ → Função para inserir um cabeçalho :param texto: do cabeçalho :param tm: quantidade de caracterestes """ linha() print(f'{texto.center(tm)}') linha() def leia_int(texto): """ → Funcção para validar números inteiros. :param texto: a ser exibido ao usuário :return: um número inteiro """ try: valor = int(input(texto)) if valor < 0: raise ValueError except (ValueError, TypeError): print(f'{cores("vermelho")}Valor inválido. Digite um número inteiro!{cores("sem")}') return leia_int(texto) except: print(f' {cores("vermelho")}O usuário preferiu não digitar esse número!{cores("sem")}') return 0 else: return valor def leia_texto(texto): try: texto = str(input(texto)).strip() except: print(f' {cores("vermelho")}O usuário decidiu finalizar o processo via comando de teclado.{cores("sem")}') exit(0) else: txt = texto.split() novo_texto = '' for t in txt: novo_texto += t if not novo_texto.isalpha(): print(f'{cores("vermelho")}Valor inválido. Digite um nome válido!{cores("sem")}') return leia_texto(texto) else: return texto def menu(lista): """ → Função para exibir o menu principal. :param lista: com os itens que compõem o menu :return: a opção escolhida """ cabecalho('MENU PRINCIPAL') for p, i in enumerate(lista): print(f'{cores("amarelo")}{p + 1} - {cores()}{cores("azul")}{i}{cores()}') linha() op = leia_int(f'{cores("verde")}Sua opção:{cores()} ') return op sistema/lib/processo/__init__.py from sistema.lib.interface import cores, leia_int, leia_texto def dados_pessoa(): """ →Função para obter os dados da pessoa :return: o nome e idade da pessoa """ nome = leia_texto('Nome: ') idade = leia_int('Idade: ') return nome, idade def cadastrar(nome, idade): """ → Função para cadastrar pessoas. :param nome: da pessoa :param idade: da pessoa """ import os.path as file try: if file.exists('Cadastros.txt'): arquivo = open('Cadastros.txt', 'a') arquivo.writelines([nome, ';', str(idade)]) arquivo.write(' ') else: arquivo = open('Cadastros.txt', 'w') arquivo.writelines([nome, ';', str(idade)]) arquivo.write(' ') arquivo.close() except: print(f'{cores("vermelho")}Erro ao manipular o arquivo de dados. Tente novamente!{cores("sem")}') else: print(f'Novo registro de {cores("branco")}{nome}{cores("sem")} adicionado.') def listar(): """ → Função para listar os cadastros existentes no arquivo de dados. """ try: arquivo = open('Cadastros.txt', 'r') linhas = arquivo.readlines() for linha in linhas: pessoa = linha[:-1].split(';') print(f'{pessoa[0]:
Guanabara, começa a usar interface gráfica agoraa! tipo, pygame e entre outros plugins como pyautogui, manipulador de imagens e entrar em um mundo mais complexo! sabe?
Desafio 115A Programa principal from pasta import menu menu() Dentro de pasta def linha(msg): print('-' * 50) print(f'{msg}') print('-' * 50) def inteiro(num): while True: try: valor = int(input(num)) except (TypeError, ValueError): print('\033[31m Erro, tente de novo. \033[m') except (KeyboardInterrupt): print('\033[31m Usuário não quis digitar. \033[m') return 0 else: return valor def menu(): from time import sleep while True: linha(f'{"Menu Principal":>32}') print('\033[33m1 - \033[32mVer pessoas cadastradas') print('\033[33m2 - \033[32mCadastrar nova Pessoa') print('\033[33m3 - \033[32mSair do Sistema \033[m') print('-' * 50) opcao = inteiro('\033[36mDigite a sua opção: \033[m') if opcao 3: print('Erro') elif opcao == 1: linha(f'{"Opção 1":>28}') elif opcao == 2: linha(f'{"Opção 2":>28}') else: print('Saindo do Programa...') sleep(1) print('Volte Sempre !') exit()
A função do menu não precisava da variável de contador, podia simplesmente usar um enumerate: def menu(lista): cabeçalho('MENU PRINCIPAL') for num, item in enumerate(lista, 1): print(f'\033[33m{num}\033[m - \033[34m{item}\033[m') print(linha()) opc = leia_int('\033[32mSua opção: \033[m') return opc # Repositório com os exercícios que fiz em github.com/emanoeldelfino/pycev
Tentei fazer em vez de copiando a def leiaint para o init do ex115, usando o import lá do 113, porém só de ter o import, quando eu rodava ele ignorava as funções menu e cabeçalho e rodava o programa do leiaint leiafloat etc... ou seja, rodava o ex113. Depois que deixei de importar e colei a def leiaint, funcionou bem, mas tá com um problema que já aparece desde o início desse exercício: está aparecendo tudo duplicado, eu dou run no programa e ele roda duas vezes sempre.
Olá, ao tentar fazer um sistema de verificação de erros para o continuar ou não no programa, percebi que ao digitar enter saie-se do programa automaticamente. Tentei, mas não consegui, encontrar um meio de fazer com que ao se digitar 'Enter' o programa respondesse 'Tecla errada. Tente outra vez.' mão não consegui lidar com o 'Enter' ou . Usei o expediente tecla = str(input('Continua? [S/N] '); if not tecla: continue, mas de nada adiantou. Obrigado por qq sugestão. Excelente curso.
Guanabara, gostaria de saber se um input pode receber textos com quebra de linhas, pois quando utilizo o Google Colab ele aceita de boa, porém quando passo para o pycharm, o input lê só a primeira linha e entende a quebra de linha do texto que coloquei como um ''Enter'' e passa pras outras linhas do codigo, tem alguma maneira de resolver isso?
@@leojulian5422 ja tentei fazer isso, e também nao funcionou, é pq tipo eu pego um texto ja pronto e colo quando pede a opção pra digitar, só que ta lendo só a primeira linha, e quando chega no final da primeira linha ele ja pula e vai direto pros próximos códigos, ou seja, a input nao ta lendo o texto completo. Isso eu digo no console, quando o programa está rodando. mas obrigado do mesmo jeito!
Se você tá passando muito texto, acho que a melhor opção não seria usar o input. Coloca o texto em um .txt e faz o programa ler esse arquivo. Ai se continuar dando erro, vai ser mais fácil de identificar onde e como arrumar.
@@LucasSilva-xb7iw mas no meu caso eu teria que usar o input, pois é o usuário quem vai digitar o texto, eu ja tentei transformar o conteudo da input em um arquivo mas acontece a mesma coisa, só vai a primeira linha para o arquivo.
Olá Guanabara.....estou usando o IDLE do Python......criei a pasta ex115....a pasta lib dentro da ex115....a pasta interface dentro da lib....e o arquuivo __init__.py dentro da interface.....e sistema.py dentro da ex115..... agora....from ex115.lib.interface import * não funcionou..... o que deu certo pra mim foi.....from lib.interface import *.....gostaria de saber porque.... grato pela atenção.
Na verdade ele esta forçando a gente a usar o que aprendeu, por exemplo, o menu não muda o texto uma vez criado, não precisava das def linha cabeçalho, tudo poderia ser jogado em def menu, fora ele usou o leiaInt, que já tinha sido criado. O que voce pode fazer, para ter uma orçanização é definir packages onde qualquer alteração voce sabe onde encontrar as def exe.e: Faça um package para layout do menu, toda vez que precisar altera o layout as def estão lá; Faça um package para as def de leitura de int , exceptions e formatação de texto e cor Faça um package para as def que irão tratar das opções do menu
Gustavo, primeiramente parabéns por todo esse projeto! Eu gostaria apenas de fazer uma observação com a ideia de melhorar a didática: Para os próximos vídeos tente ter uma cadência um pouco mais equilibrada nos momentos de explicação, sem ser muito rápido e nem muito lento. E, talvez o mais importante, tente não colocar tantos "parênteses" principalmente no meio de uma explicação/enquanto você está ilustrando a sintaxe. Isso porque, obviamente, para você, está claro e lógico, mas para quem está aprendendo e tentando desenhar mentalmente o que você está explicando, essa quebra pode ser prejudicial. Um mega parênteses com algo não diretamente ligado ao assunto, como por exemplo: "Ah, se vc não sabe o que é isso, veja na outras aulas, pq está tudo explicado. É pq chega aluno aqui e diz que não foi explicado..." é algo importante a ser dito, claro, porém ela se estende por um longo no meio da explicação, fazendo perder a linha de raciocínio com uma observação que não surtirá efeito direto algum. Espero que vc entenda como uma crítica construtiva de um ex-aluno da FAETEC! Abraço!
Pensei que não usaria o if else pra fazer a última tomada de decisão. Realmente usando o try e expect funcionam apenas com tratamento de erros. Eu não poderia tentar usar eles como if else. Eu até tentei, não houve erro de compilação, mas houve erro de lógica, pois ele não funciona com outras coisas. Intermediário por conta disso. Deixei um pouco mais enxuto o meu código. from time import sleep; def PrintMenu(msg): print('-' * 30); print('\t', msg); print('-' * 30); def mainMenu(liste): while True: try: PrintMenu('MAIN MENU'); i = 0; for item in liste: print(f'{i + 1} - {item}'); i += 1; print('-' * 30); i = int(input('Your option: ')); n = int(i); return i; except: print(' ERROR: please, type a integer number!!'); while True: Option = mainMenu(['People registered:', 'Register one more person', 'Leave the system']); if(Option == 1): PrintMenu('Option 1'); elif(Option == 2): PrintMenu('Option 2'); elif (Option == 3): print('Leaving...'); sleep(2); break; else: print('ERROR: the option is inexistent. Try again!!');
dicionário carros = dict() { 'carro 1' ; 'BMW', 'carro 2' ; 'Ferrari', 'carro 3' ; 'Audi' etc etc etc } faz a função e altera pra retornar o dicionário todo, ou só os valores pode colocar um for pra isso for k, v in carros: print(f'{k} -> {v})
Eu achei meio confuso de entender esses exercícios de pacote e módulos, eu fiz de acordo com o meu entendimento, vamos lá ! PACOTE (CADASTRO): def linha(mensagem='MENU PRINCIPAL'): print('-' * 35) print(f'{mensagem:^35}') print('-' * 35) def menu(): linha() print("""1 - Ver pessoas cadastradas 2 - Cadastrar nova pessoa 3 - Sair do programa""") print('-' * 35) while True: try: opcao_usuario = int(input('Sua opção: ')) if opcao_usuario == 1: linha('OPÇAO 1') elif opcao_usuario == 2: linha('OPÇÃO 2') elif opcao_usuario == 3: linha('SAINDO DO SISTEMA...') break else: print('ERRO: Digite uma opção válida') except(TypeError, ValueError): print('ERRO: Opção invalida!') except KeyboardInterrupt: print('Usuário interrompeu o programa.') #### PROGRAMA PRINCIPAL #### import cadastro menu = cadastro.menu() print(menu)
Guanabara, estou com um projeto onde preciso criar um código que cadastre usuários e eles tenham login e senha. Eu gostaria de saber como fazer o programa ler a senha respectiva de cada usuário. No código, há uma lista com os usuários e senhas. Ex.:[[João,123],[Maria,12234][Júlia, 445]]. Como eu faria para o programa checar se o Login e senha digitados estão na mesma "mini-lista" que criei?
Pessoal fui renomear o arquivo onde criei meus modulos e pacotes e agora parou de funcionar, fica dando esse erro -> No module named 'PACOTES_', já ajeitei os caminhos mas ainda assim fica aparecendo isso, alguém já passou por algo igual. Já pesquisei a respeito mas só encontro esse erro quando trata-se de uma biblioteca/função/modulo ja pronta que importamos, e não das que nós criamos
Não entendi a parte do resposta = menu Como uma variável recebe um código inteiro tipo esse do menu e o valor dele acaba sendo só o que o usuário digitou?
É que o que a variável está recebendo é o resultado da função chamada menu. O que parece grande é a sequência de parâmetros dessa função na chamada, mas o resultado retornado pela função ainda é um valor único. Se você não entendeu bem o que eu disse, este curso tem uma aula (e vários exercícios) só sobre funções e seus parâmetros.
@@FelipeVicente Isso, e esse resultado, por sua vez, é o número da opção escolhida pelo usuário, conforme a função mesma nos diz. :) Fique com Deus e bons estudos
A solução que eu cheguei foi meio diferente... def line(): print('\033[1;36m=\033[m'*35) def interface(): line() print('\033[1;97mMENU PRINCIPAL\033[m'.center(35)) line() print('''\033[1;34m1 - Ver pessoas cadastradas 2 - Cadastrar nova pessoa 3 - Sair\033[m''') line() def validator(): from time import sleep while True: sleep(0.75) interface() try: val = int(input('\033[1;32mDeseja qual opção? \033[m')) if val 3: raise Exception except (TypeError, ValueError): print('\033[1;31mERRO! Opção inválida.\033[m') except Exception: print('\033[1;33mOops! As opções são 1, 2 e 3.\033[m') else: if val == 1: line() print('OPÇÃO 1'.center(35)) line() if val == 2: line() print('OPÇÃO 2'.center(35)) line() if val == 3: print('\033[1;32mFinalizado com sucesso! Volte sempre =)\033[m') break
#NA ABA DO PROGRAMA PRINCIPAL import ex115_modulos cor = [{'azul':'\033[0;34m'}, {'amarelo':'\033[0;33m'}, {'neutro':'\033[m'}, {'vermelho':'\033[0;31m'}] while True: ex115_modulos.linha('MENU PRINCIPAL') print(f'''{cor[1]["amarelo"]}1{cor[2]["neutro"]} - {cor[0]["azul"]}Ver pessoas cadastradas{cor[2]["neutro"]} {cor[1]["amarelo"]}2{cor[2]["neutro"]} - {cor[0]["azul"]}Cadastrar nova Pessoa{cor[2]["neutro"]} {cor[1]["amarelo"]}3{cor[2]["neutro"]} - {cor[0]["azul"]}Sair do sistema{cor[2]["neutro"]}''') print('-'*35) opcao = str(input(f'{cor[1]["amarelo"]}Sua opção:{cor[2]["neutro"]} ')) if opcao not in '123' or opcao == '': print(f'{cor[3]["vermelho"]}Erro! Digite uma opção válida!{cor[2]["neutro"]}') elif opcao == '1': ex115_modulos.mostralista() elif opcao == '2': ex115_modulos.cadastro('Nome: ', 'Idade: ') elif opcao == '3': break ex115_modulos.linha('Saindo do sistema... Até logo!') #NA ABA COM OS MODULOS lista = [[], []] cor = [{'azul':'\033[0;34m'}, {'amarelo':'\033[0;33m'}, {'neutro':'\033[m'}, {'vermelho':'\033[0;31m'}] def linha(txt): print('-'*35) print(f'{txt:^35}') print('-'*35) def cadastro(n, i): linha('CADASTRAR UMA PESSOA') while True: nome = str(input(n)).title().strip() if nome.replace(' ','').isalpha(): lista[0].append(nome) break else: print(f'{cor[3]["vermelho"]}Erro! Por favor, digite um nome válido!{cor[2]["neutro"]}') while True: try: idade = int(input(i)) lista[1].append(idade) break except: print(f'{cor[3]["vermelho"]}Erro! Por favor, digite uma idade válida!{cor[2]["neutro"]}') print(f'Novo registro de {nome} adicionado') def mostralista(): if len(lista[0]) == 0: linha('PESSOAS CADASTRADAS') print('Não há pessoas cadastradas.') else: linha('PESSOAS CADASTRADAS') for c in range(0, len(lista[0])): print(f'{lista[0][c]:
Eu estou tentando instalar a biblioteca pygame no pycharm igual você fez no exercício 21. Não quer instalar e referência da lâmpada vermelha parou tbm de aparecer. Será que alguém pode me aju dar para mim finalizar o o ex 21? Tem outra forma de baixar no pycharm
@@leojulian5422 eu tentem pip. Tbm não deu. Eu estou com um notebook com o Windows sete. Eu mostrar o que fica escrito quando nao instala o pygame. Talvez você saiba.
O meu ficou menor o programa principal, mas com módulos maiores: #programa principal from ex115.lib import interface print(interface.menu()) #módulos def linha(tam=42): print('-' * tam) def cor(c, cor='normal'): if cor == 'vermelho': c = f'\033[0;31m{c}\033[m' if cor == 'amarelo': c = f'\033[0;32m{c}\033[m' if cor == 'dourado': c = f'\033[0;33m{c}\033[m' if cor == 'azul': c = f'\033[0;34m{c}\033[m' return c def menu(opcao=0): while opcao != 3: linha() print(F'{"MENU PRINCIPAL":^42}') linha() print(cor('1', 'dourado'), '-', cor('Ver pessoas cadastradas', 'azul')) print(cor('2', 'dourado'), '-', cor('Cadastrar nova pessoa', 'azul')) print(cor('3', 'dourado'), '-', cor('Sair do Sistema', 'azul')) linha() while True: try: opcao = int(input(cor('Sua Opção: ', 'amarelo'))) except (TypeError, ValueError): print(cor('Erro! Digite um número inteiro válido!', 'vermelho')) else: if opcao == 2 or opcao == 1: linha() print(f'Opção {opcao}'.center(42)) linha() break elif opcao == 3: break else: print(cor('Erro! Digite uma opção válida!', 'vermelho')) print('Fim do programa')
fiz diferente porém igual: def linha(a=42): return '-' * a def cabeçalho(txt): print(linha()) print(txt.center(42)) print(linha()) def menu(lista): while True: cabeçalho('MENU PRINCIPAL') c = 1 for intem in lista: print(f'\033[1;32m{c}\033[m - \033[1;34m{intem}\033[m') c += 1 print(linha()) a = opção('Sua Opção:') if a == 3: break elif a == 1: cabeçalho('Opção 1') else: cabeçalho('Opção 2') cabeçalho('Saindo do sistema... Até logo!') def opção(num): try: a = int(input(num)) return a except ValueError: print('\033[1;31mERROR: por favor, digite apenas um número inteiro válido.\033[m') except KeyboardInterrupt: print(' \033[1;31mO babaca preferiu não informa o valor\033[m') a = 0 return a return opção(num)
#Jose. Trabalho do caramba, mais o exercicio em si é fácil modulo: def testidade(): """ :return: Retorna um valor int, e só sai quando for um int válido. """ p = 0 while True: try: p = int(input('Idade: ')) return p except ValueError: print(f'{c('r')}ERRO: por favor, digite uma idade válida.{c('w')}') def testestring(): """ :return: Quando a variavel nome, for somente string """ while True: nome = str(input('Nome:')).strip().capitalize() copia = nome nome = nome.replace(' ', '') if nome.isalpha(): nome = copia return nome print(f'{c('r')}ERRO! Por Favor Digite somente Letras no nome!{c('w')}') def c(co='n'): """ :param co: escolha do usuario :return: retorna a cor escolhida """ cor = {'n': '\033[1;m', 'p': '\033[1;30m', 'r': '\033[1;31m', 'g': '\033[1;32m', 'y': '\033[1;33m', 'z': '\033[1;34m', 'c': '\033[1;36m', 'w': '\033[1;97m' } for k, v in cor.items(): if k in co: return v Arquivo programa Pricipal # Sistema de modularizadom que permite cadastrar pessoas pelo nome e idade, # Em um arquio de txt from utilidades.fun import testidade, testestring, c def menu(): print(f'-{c("w")}' * 50) print(f'{"MENU PRINCIPAL":^49}') print('-' * 50) print(f'{c("y")}1{c("w")} - {c("z")}Ver pessoas cadastradas') print(f'{c("y")}2{c("w")} - {c("z")}Cadastrar nova Pessoa') print(f'{c("y")}3{c("w")} - {c("z")}Sair do Sistema') def mostra(): print(f'{c("w")}-' * 50) print(f'{"PESSOAS CADASTRADAS":^49}') print('-' * 50) with open('teste_manip.txt', 'r', encoding='utf-8') as t: t = t = t.read() print(t) def cadastra(nome='', idade=0): with open('teste_manip.txt', 'a') as a: a.write(f' {nome:40}{idade} Anos') print(f'{c('g')}-' * 50) print(f'Novo registro de {nome} adicionado!') print(f'-' * 50, c('n')) # Principal while True: opc = 0 menu() # Testa se a opçao está correta while True: try: opc = int(input(f'{c("y")}Sua opçao:')) if 1
O meu menu ficou um pouco diferente, mas... from time import sleep def opt(num): if num == 1: print('OPÇÃO 1') elif num == 2: print('OPÇÃO 2') while True: print('='*30) print('MENU PRINCIPAL'.center(30)) print('='*30) print('\033[32m1 - Ver pessoas cadastradas') print('2 - Cadastrar pessoas') print('3 - Sair\033[0m') print('='*30) while True: try: n = int(input('Sua resposta: ')) except: print('\033[31mErro! Não é um número!\033[0m') else: if n > 3 or n < 1: print('\033[31mErro! Número inválido!\033[0m') else: break if n == 3: print('\033[31mSAINDO\033[0m') sleep(1) break else: opt(n) print('='*30)
Guanabara, você mudou a história contemporânea da tecnologia na vida de pessoas de baixa renda em um país subdesenvolvido que é o Brasil. Deus tem orgulho de ti!
vdd, graças a ele virei garota de programa, amo programar!!
@@pretadesouza2011 Kkkkkkkkkk moça??????
@@pretadesouza2011 oxe kkkkk
@@pretadesouza2011 Quanto é o programa? Qual o tipo de linguada? Digo, linguagem?
Eu comecei este curso pq eu queria fazer física e me disseram que era bom ter noção de programação para usar na faculdade. Mas acabou que eu amei tanto programação, que mudei de curso, hoje faço Ciência da Computação na UEL. Obrigado Guanabara!!!
Professor Guanabara, todo início de aula você fala sobre o andamento do curso, outros cursos e sobre outros assuntos e isso dura em média 2 a 3 minutos. Geralmente nos vídeos de outras pessoas eu pulo essas partes imediatamente, mas o seu marketing nessas partes introdutórias é tão bom que eu faço questão de assistir todas.
Com isso, consigo aprender até marketing no início dos seus vídeos.
Parabéns a você e a toda sua equipe!
Aeee, os exercícios de Python tá na área novamente. haha ! ❤️
up
Oi Guanabara, a gente já tá há bastante tempo só no console, você vai fazer um vídeo sobre interface gráfica algum dia? Talvez tkinter?
UP PRA ELE VER
UP UP
Up
Curtam curtam curtam UP UP up
up
Gente, vou deixar uma dica pra quem quiser.
> O laço while aceita o comando 'else:', mas ele só se ativa quando o laço termina "naturalmente";
> Assim, se vc usar o comando 'break', não é possível ativar o 'else:', porque o laço estaria terminando de maneira "forçada";
> Como então sair de um laço while sem usar o break?? Você pode usar uma variável de controle de tipo booleano (True or False)
> Exemplificando:
controle_do_while = True
while controle_do_while:
[BLOCO DE CÓDIGO]
opcao = str(input('Deseja continuar? [S/N]'))
if opcao == 'N':
controle_do_while = False
> Exemplificando acima de forma bem genérica, o laço termina "naturalmente" e você pode acrescentar o 'else:'
controle_do_while = True
while controle_do_while:
[BLOCO DE CÓDIGO]
opcao = str(input('Deseja continuar? [S/N]'))
if opcao == 'N':
controle_do_while = False
else:
[BLOCO DE CÓDIGO 2]
Espero que isso seja util pra alguem hehe
Meu Deus, e como ajudou!! MUITO OBRIGADO. Eu sempre criava outro loop dentro!
caralho, esse curso de python tá maior que cursos pagos
assim que é bom :D
Obrigado, Guanabara.
Só que é incompleto né kkkkkk
*10:24*
Outra solução para retornar o menu seria utilizado a função _enumerate_
for i,v in enumerate(lista):
print(f'{i} - {v}')
Coloca os videos do desafio 115 na playlist do mundo 3, mito. Assim o video não fica "perdido".
Em tempo, obrigado por essas aulas, Guanabara e parceiros, curso de muita qualidade!
Muito legal, eu conseguir fazer quase tudo, só não conseguir salvar o resto, fiz tudo corretamente com o conteúdo até aqui, muito obrigado Guanabara!
SUPER LIKE !!!
TOP DEMAIS ...
Uma dica é não usar o if para as opções use o comando match, o match se aplica a um variavel, exemplo
match num:
case 1:
print('opção 1')
case 2:
print('opção 2')
Guanabara, nenhuma das partes do exercício 115 está listada lá na Playlist do Mundo 3. Esses são os únicos vídeos que estão falando por lá.
Grande abraço e parabéns novamente pelo excelente trabalho!
Muito legal, você também pode também importar do exercício a validação de leiaInt, também está fazendo a reutilização de código.
Eu fiz essa primeira parte, porém o código do professor Guanarabara ficou melhor. Por isso, estou usando algumas técnicas que ele utilizou e adaptar para minha solução.
Pensei que já havia terminado o curso de Python, mas que surpresa.
esse curso é excepcional!
Ficou fácil pois entendi tudo que foi ensinado até agora!!!!
show de bola guanabara nota 10!
nesse código ai se você der um KeyInterrupt, ele está retornando 0 e caindo no loop infinito denovo, rs eu alterei la no 'LeiaInt' para retornar '3' dai ele cai na opção de encerramento!
Bom vídeo. 🙂
Amanha (Domingo 20-02-22) Guanabara vai estar no Domingão do Hulk - tenho orgulho desse cara!.. Parabéns Guanabara!
Passando aqui para informar que a forma que o Guanabara está passando modularização não é recomendada para criação de sistemas de verdade, mas para fins educacionais não tem problema.
Putz Guanabara, como queria q vc fizesse um curso de C++ tbm.
não tem um curso q preste na Udemy igual aos que vc dá aqui.
Quase todos ignoram a importância da parte teorica.
Honestamente, eu estaria até disposto a pagar!
Dá uma olhada no Estudonauta.com bro, espa tem esse curso lá!
Eu estou fazendo dois cursos esse de python e um de C++ no canal do Fessor Bruno, ele pode até não ter o jeito que o Guanabara explica, mas explica muito bem
Tá falando bosta, lá tem um monte de curso excelente, inclusive estou empregado na área graças as certificações de lá pq o Guanabara nunca trata de conteúdos avançados
Demorei 1 dia e meio pra poder fazer esse exercicio, mas consegui finalmente
Eae jovem, aprendeu a programar???
Aprendeu a fazer jogos e aplicativos??
Pode me dizer, por favor.
Amo muito python...ainda vai ter mundo 4???.....quem quer deixa o like ...
Vai ter o 4 e 5, ele afirmou em aulas passadas
Serioo???....nossssaaaaa
Estou aguardando ansioso os novos mundos ... Este curso é fantástico, o único problema é a demora excessiva em lançar conteúdo novo .
o ano é 2022 e ainda n tem mundo 4 e nem o 5 kkkkkk (rindo de tristeza mesmo)
@@JVictorCarvalho1 estamos em 2023 e nadaaa
Sensacional!!!
Ufa!!!!!! Parabéns!!
8:39 Por acaso eu consegui criar o programa todo de uma vez, depois corri e funcionou :D No final ajustei a 'interface' no terminal para ficar melhor formatado.
Bem, na verdade primeiro tive que ir pesquisar manipulação de ficheiros de texto, só depois criei o código.
Continuando o aprendizado.
Continua em peso, e ensina a gente o tkinter
cara eu tenho visto esses videos aqui e tem me ajudado muito
ruclips.net/video/e2SKXBALAws/видео.html
Tkinter nem é usado em aplicações reais hoje em dia é muito limitado, e o professor vai ensinar django em alguma das suas aula ele fala sobre isso
Um dia chego nesse exercício hehe
Estou no 64 mais ou menos
Chupa já cheguei
Excelente!
Dalee Guanabara... Grato!
(Comentando antes de ver o vídeo):
Eu consegui fazer o menu, tudo bonitinho, cadastrar pessoas em dicionário e lista, mas obviamente não consegui fazer o negócio salvar permanentemente kkkkk vamos ver a resolução pra ver se eu fiz mais ou menos como era esperado!
Tão bom, vendo os vídeos de python voltando!!!!!
Nos próximos mundo, trabalha com VS Code ao invés do PyCharm.
Essa parte de pacotes não estou conseguindo fazer no VS code, no pycharm parece ser mais fácil, pode me ajudar?
Obrigado. :D
Eu sei que o tema é Python, mas será que poderia fazer um vídeo sobre Regex no javascript? É um tema muito importante e carente de material bem explicado.
Bom,já estamos no antepenúltimo exercício😢,o tempo passa rápido quando nós divertirmos.. .Fiz o exercício completo antes de ver os vídeos de exercícios ,então saiu de uma forma completamente diferente da do Guanabara.Irei assistir os vídeos para ver a solução do Guanabara,já testei tudo e ta
tá tudo certinho,lá no
último vídeo de exercício irei colocar a minha solução.
Olá Gustavo Guanabara, comecei a fazer o curso esse ano e, já estou completando o mundo 2 , estou querendo tirar um certificado do mundo um mais ainda está indisponível
Algumas coisas eu não sabia como fazer, aí tive que pesquisar na web, mas fui pensando na lógica e pesquisando como fazia. Cabe mais alguns tratamentos de erro mas de princípio ficou assim. E claro, simplificar o código utilizando a modularização. Na função ver database tem essa repetição de código pois por algum motivo depois da formatação o loop for não estava rodando.
cadastro_com_db():
cores = {"vermelho": '\033[0;31m',
"verde": '\033[0;32m',
"azul-claro": '\033[0;36m',
"cinza": '\033[0;37m',
"roxo": '\033[0;35m',
"amarelo": '\033[0;33m',
"termina": '\033[m'}
try:
with open('database.txt', 'r') as db:
db = db
except FileNotFoundError:
with open('database.txt', 'w') as db:
db = db
def ver_database():
with open('database.txt', 'r') as db:
print(f"{cores['roxo']}{61 * '-'}")
if len(db.read()) == 0:
print(20 * ' ', 'Não possui Cadastros')
print(61 * '-', cores["termina"])
return cadastro_com_db()
print(20 * ' ', 'Pessoas Cadastradas')
print(61 * '-', cores["termina"])
with open('database.txt', 'r') as db:
for linha in db.readlines():
linha = linha.strip()
print(f"{cores['azul-claro']}{linha[:linha.find(';')]}".ljust(40),
f"{linha[linha.find(';') + 1:]} Anos{cores['termina']}")
return cadastro_com_db()
def cadastrar_pessoa():
print(f"{cores['roxo']}{61 * '-'}")
print(25 * ' ', 'CADASTRO')
print(61 * '-', cores["termina"])
nome = input(f'{cores["azul-claro"]}Digite seu nome: ')
idade = input('Digite sua idade: ')
with open('database.txt', 'a+') as db:
# db.seek(0)
database = db.read()
# if nome != unidecode.unidecode(database):
# print('Acentos ou caractéres especiais não são permitidos, tente novamente.')
# return cadastrar_pessoa()
if nome.lower() in database.lower():
print(f'{cores["vermelho"]}Esse nome já existe, tente novamente.{cores["termina"]}')
return cadastrar_pessoa()
nome = nome.title()
db.write(nome + ';' + idade + '
')
print(f'{cores["verde"]}{nome} foi cadastrado(a) com sucesso.{cores["termina"]}')
return cadastro_com_db()
# Escolha do usuário
print(f"{cores['roxo']}{61 * '-'}")
print(22 * ' ', 'Menu Principal')
print(61 * '-', cores["termina"])
choice = int(input(f'{cores["azul-claro"]}1 - Ver Tabela de Cadastro'
f'
2 - Cadastrar Pessoa'
f'
3 - Sair{cores["termina"]}'
f'
{cores["roxo"]}{61 * "-"}{cores["termina"]}'
f'
{cores["amarelo"]}Escolha uma ação: {cores["termina"]}'))
if choice == 3:
print()
print(f'{cores["vermelho"]}Saindo', end='')
for sec in range(0, 3):
time.sleep(1)
print('.', end='')
print()
return
elif choice == 1:
return ver_database()
elif choice == 2:
return cadastrar_pessoa()
cadastro_com_db()
Nossa que bom mais exercícios,vai lança novas aulas?
Que exercício Top em
Estamos terminando ...
Faz aula de criação de jogo
sistema/lib/interface/__init__.py
def cores(cor='sem'):
"""
→ Função para formatação de cores
:param cor: a ser aplicada
:return: a cor
"""
cores = {
'sem': '\033[m', # 0 - sem cor
'branco': '\033[1;30m', # 1 - branco
'vermelho': '\033[1;31m', # 2 - vermelho
'verde': '\033[1;32m', # 3 - verde
'amarelo': '\033[1;33m', # 4 - amarelo
'azul': '\033[1;34m', # 5 - azul
'roxo': '\033[1;35m', # 6 - roxo
'magenta': '\033[1;36m', # 7 - magenta
'cinza': '\033[1;37m' # 8 - cinza
}
return cores[cor]
def linha(tm=50, simb='-'):
"""
→ Função para criar uma linha
:param tm: tamanho da linha
:param simb: símbolo para formação da linha
:return: a linha
"""
return print(simb * tm)
def cabecalho(texto, tm=50):
"""
→ Função para inserir um cabeçalho
:param texto: do cabeçalho
:param tm: quantidade de caracterestes
"""
linha()
print(f'{texto.center(tm)}')
linha()
def leia_int(texto):
"""
→ Funcção para validar números inteiros.
:param texto: a ser exibido ao usuário
:return: um número inteiro
"""
try:
valor = int(input(texto))
if valor < 0:
raise ValueError
except (ValueError, TypeError):
print(f'{cores("vermelho")}Valor inválido. Digite um número inteiro!{cores("sem")}')
return leia_int(texto)
except:
print(f'
{cores("vermelho")}O usuário preferiu não digitar esse número!{cores("sem")}')
return 0
else:
return valor
def leia_texto(texto):
try:
texto = str(input(texto)).strip()
except:
print(f'
{cores("vermelho")}O usuário decidiu finalizar o processo via comando de teclado.{cores("sem")}')
exit(0)
else:
txt = texto.split()
novo_texto = ''
for t in txt:
novo_texto += t
if not novo_texto.isalpha():
print(f'{cores("vermelho")}Valor inválido. Digite um nome válido!{cores("sem")}')
return leia_texto(texto)
else:
return texto
def menu(lista):
"""
→ Função para exibir o menu principal.
:param lista: com os itens que compõem o menu
:return: a opção escolhida
"""
cabecalho('MENU PRINCIPAL')
for p, i in enumerate(lista):
print(f'{cores("amarelo")}{p + 1} - {cores()}{cores("azul")}{i}{cores()}')
linha()
op = leia_int(f'{cores("verde")}Sua opção:{cores()} ')
return op
sistema/lib/processo/__init__.py
from sistema.lib.interface import cores, leia_int, leia_texto
def dados_pessoa():
"""
→Função para obter os dados da pessoa
:return: o nome e idade da pessoa
"""
nome = leia_texto('Nome: ')
idade = leia_int('Idade: ')
return nome, idade
def cadastrar(nome, idade):
"""
→ Função para cadastrar pessoas.
:param nome: da pessoa
:param idade: da pessoa
"""
import os.path as file
try:
if file.exists('Cadastros.txt'):
arquivo = open('Cadastros.txt', 'a')
arquivo.writelines([nome, ';', str(idade)])
arquivo.write('
')
else:
arquivo = open('Cadastros.txt', 'w')
arquivo.writelines([nome, ';', str(idade)])
arquivo.write('
')
arquivo.close()
except:
print(f'{cores("vermelho")}Erro ao manipular o arquivo de dados. Tente novamente!{cores("sem")}')
else:
print(f'Novo registro de {cores("branco")}{nome}{cores("sem")} adicionado.')
def listar():
"""
→ Função para listar os cadastros existentes no arquivo de dados.
"""
try:
arquivo = open('Cadastros.txt', 'r')
linhas = arquivo.readlines()
for linha in linhas:
pessoa = linha[:-1].split(';')
print(f'{pessoa[0]:
Likou professor
nossa 2019, bora pro mundo 4
Eu fiz utilizando o sqlite é um pouco mais complexo, mas não é nada impossível!
Muito obrigada, só tenho uma pergunta: se eu quiser mudar o último número das opções do menu para 0, como eu faço?
galerinha que sofre com a questão das cores no #VSCODE VS CODE utilize o seguinte:
import colorama
colorama.init()
eu utilizei dentro da interface.py
Guanabara, começa a usar interface gráfica agoraa! tipo, pygame e entre outros plugins como pyautogui, manipulador de imagens e entrar em um mundo mais complexo! sabe?
Desafio 115A
Programa principal
from pasta import menu
menu()
Dentro de pasta
def linha(msg):
print('-' * 50)
print(f'{msg}')
print('-' * 50)
def inteiro(num):
while True:
try:
valor = int(input(num))
except (TypeError, ValueError):
print('\033[31m Erro, tente de novo. \033[m')
except (KeyboardInterrupt):
print('\033[31m Usuário não quis digitar. \033[m')
return 0
else:
return valor
def menu():
from time import sleep
while True:
linha(f'{"Menu Principal":>32}')
print('\033[33m1 - \033[32mVer pessoas cadastradas')
print('\033[33m2 - \033[32mCadastrar nova Pessoa')
print('\033[33m3 - \033[32mSair do Sistema \033[m')
print('-' * 50)
opcao = inteiro('\033[36mDigite a sua opção: \033[m')
if opcao 3:
print('Erro')
elif opcao == 1:
linha(f'{"Opção 1":>28}')
elif opcao == 2:
linha(f'{"Opção 2":>28}')
else:
print('Saindo do Programa...')
sleep(1)
print('Volte Sempre !')
exit()
CARA, que saudade
Gustavo, qual a grade que você criaria para uma turma de Sistemas de Informação? Do 1º período ao 8º período.
Eu só queria um PC pra praticar essas aulas
vc pode usar a internet pra programar
Celular da pra programar em python mano,só é mais chato,mais da!
Tou quase no exercicio 70 só pelo celular.
Tem um app para android, aula 5.
@@PRISMOVITO eu usava o termux só que não tem todos função do pc
A função do menu não precisava da variável de contador, podia simplesmente usar um enumerate:
def menu(lista):
cabeçalho('MENU PRINCIPAL')
for num, item in enumerate(lista, 1):
print(f'\033[33m{num}\033[m - \033[34m{item}\033[m')
print(linha())
opc = leia_int('\033[32mSua opção: \033[m')
return opc
# Repositório com os exercícios que fiz em github.com/emanoeldelfino/pycev
Tentei fazer em vez de copiando a def leiaint para o init do ex115, usando o import lá do 113, porém só de ter o import, quando eu rodava ele ignorava as funções menu e cabeçalho e rodava o programa do leiaint leiafloat etc... ou seja, rodava o ex113.
Depois que deixei de importar e colei a def leiaint, funcionou bem, mas tá com um problema que já aparece desde o início desse exercício: está aparecendo tudo duplicado, eu dou run no programa e ele roda duas vezes sempre.
Olá, ao tentar fazer um sistema de verificação de erros para o continuar ou não no programa, percebi que ao digitar enter saie-se do programa automaticamente. Tentei, mas não consegui, encontrar um meio de fazer com que ao se digitar 'Enter' o programa respondesse 'Tecla errada. Tente outra vez.' mão não consegui lidar com o 'Enter' ou . Usei o expediente tecla = str(input('Continua? [S/N] '); if not tecla: continue, mas de nada adiantou. Obrigado por qq sugestão. Excelente curso.
Qual é o python que vc usa nos vídeos?
Guanabara, gostaria de saber se um input pode receber textos com quebra de linhas, pois quando utilizo o Google Colab ele aceita de boa, porém quando passo para o pycharm, o input lê só a primeira linha e entende a quebra de linha do texto que coloquei como um ''Enter'' e passa pras outras linhas do codigo, tem alguma maneira de resolver isso?
@@leojulian5422 ja tentei fazer isso, e também nao funcionou, é pq tipo eu pego um texto ja pronto e colo quando pede a opção pra digitar, só que ta lendo só a primeira linha, e quando chega no final da primeira linha ele ja pula e vai direto pros próximos códigos, ou seja, a input nao ta lendo o texto completo. Isso eu digo no console, quando o programa está rodando. mas obrigado do mesmo jeito!
Se você tá passando muito texto, acho que a melhor opção não seria usar o input. Coloca o texto em um .txt e faz o programa ler esse arquivo. Ai se continuar dando erro, vai ser mais fácil de identificar onde e como arrumar.
provavelmente o texto que vc coloca ta bugando por causa de aspas no proprio texto
exemplo
var = input(" oi "tudo" bem")
@@LucasSilva-xb7iw mas no meu caso eu teria que usar o input, pois é o usuário quem vai digitar o texto, eu ja tentei transformar o conteudo da input em um arquivo mas acontece a mesma coisa, só vai a primeira linha para o arquivo.
@@ChannelboxSandbox o input também aceita aspas simples ex: input('digite "1" to enter ou "2" to exit: ')
Olá Guanabara.....estou usando o IDLE do Python......criei a pasta ex115....a pasta lib dentro da ex115....a pasta interface dentro da lib....e o arquuivo __init__.py dentro da interface.....e sistema.py dentro da ex115..... agora....from ex115.lib.interface import * não funcionou..... o que deu certo pra mim foi.....from lib.interface import *.....gostaria de saber porque.... grato pela atenção.
Eu de novo....Há alguma coloração de texto que funcione no IDLE?
Pra quem tava falanfo q programar no celular tbm e eficiente, agora faz vc faz uma coisa q so no pc pu leptop e possivel!!!!!! Presta Atenção!!!!
Fiz o meu modularizado, tudo funciona... mas não ficou tão organizado... Como fazer para chegar a esse nível de raciocinio e organização!?
def novapessoa():
with open('pessoas.txt', 'a') as pessoas:
nome = str(input('Nome: '))
pessoas.write(nome + '##')
while True:
print('Idade: ', end='')
try:
idade = int(input())
break
except ValueError:
print(f'\33[31mERRO!: Digite uma idade válida.\33[m')
idade = str(idade)
pessoas.write(idade + '
')
print(f'Registro de {nome} adicionado.')
def verpessoas():
from time import sleep
leiatitulo('pessoas cadastradas')
with open('pessoas.txt', 'r') as pessoas:
pessoa = pessoas.readlines()
for i in pessoa:
dados = i.split('##', 2)
dados[1] = dados[1].replace('
', '')
for j in dados:
sleep(.3)
if dados.index(j) % 2 == 0:
print(f'{j:3} anos')
sleep(1.5)
def leiatitulo(texto):
texto = texto.upper().strip()
print('-'*30)
print(f'{texto:^30}')
print('-'*30)
def menu():
leiatitulo('menu principal')
print('\33[33m1 - \33[34mVer pessoas cadastradas\33[m')
print('\33[33m2 - \33[34mCadastrar nova pessoa\33[m')
print('\33[33m3 - \33[34mSair do sistema\33[m')
print('-'*30)
while True:
print('\33[33mSua Opção: \33[m', end='')
try:
opc = int(input())
if 1
Na verdade ele esta forçando a gente a usar o que aprendeu, por exemplo, o menu não muda o texto uma vez criado, não precisava das def linha cabeçalho, tudo poderia ser jogado em def menu, fora ele usou o leiaInt, que já tinha sido criado.
O que voce pode fazer, para ter uma orçanização é definir packages onde qualquer alteração voce sabe onde encontrar as def exe.e:
Faça um package para layout do menu, toda vez que precisar altera o layout as def estão lá;
Faça um package para as def de leitura de int , exceptions e formatação de texto e cor
Faça um package para as def que irão tratar das opções do menu
esses últimos exercícios tão puxados, ta fácil de entender, mas fácil de esquecer
AMÉMMMMMMMMMM
Gustavo, primeiramente parabéns por todo esse projeto!
Eu gostaria apenas de fazer uma observação com a ideia de melhorar a didática:
Para os próximos vídeos tente ter uma cadência um pouco mais equilibrada nos momentos de explicação, sem ser muito rápido e nem muito lento. E, talvez o mais importante, tente não colocar tantos "parênteses" principalmente no meio de uma explicação/enquanto você está ilustrando a sintaxe. Isso porque, obviamente, para você, está claro e lógico, mas para quem está aprendendo e tentando desenhar mentalmente o que você está explicando, essa quebra pode ser prejudicial. Um mega parênteses com algo não diretamente ligado ao assunto, como por exemplo: "Ah, se vc não sabe o que é isso, veja na outras aulas, pq está tudo explicado. É pq chega aluno aqui e diz que não foi explicado..." é algo importante a ser dito, claro, porém ela se estende por um longo no meio da explicação, fazendo perder a linha de raciocínio com uma observação que não surtirá efeito direto algum.
Espero que vc entenda como uma crítica construtiva de um ex-aluno da FAETEC!
Abraço!
Guanabara, quando importo a lib, não é reconhecido. Como devo proceder? Obrigada
Comigo tbm não funcionava, aí apaguei um arquivo py que tinha o mesmo nome da pasta: "ex115". Tava dando conflito. Depois disso funcionou de boa
Tive que pular esse exercício e fazer os outros
Posta mais pf
Vcs tão conseguindo se cadastrar no site pra emitir certificado? Pq eu n
N dá mais
@@mateushenrique6421 pq não?
Pq não da mais?
@@GuilhermeHenrique-se1ok pq eles tão criando um novo site...
deu um trabalho, tive alguns probleminhas por conta que eu não estava conseguindo me consentrar mas deu tudo certo no final kkkk
Pensei que não usaria o if else pra fazer a última tomada de decisão. Realmente usando o try e expect funcionam apenas com tratamento de erros. Eu não poderia tentar usar eles como if else. Eu até tentei, não houve erro de compilação, mas houve erro de lógica, pois ele não funciona com outras coisas. Intermediário por conta disso. Deixei um pouco mais enxuto o meu código.
from time import sleep;
def PrintMenu(msg):
print('-' * 30);
print('\t', msg);
print('-' * 30);
def mainMenu(liste):
while True:
try:
PrintMenu('MAIN MENU');
i = 0;
for item in liste:
print(f'{i + 1} - {item}');
i += 1;
print('-' * 30);
i = int(input('Your option: '));
n = int(i);
return i;
except:
print('
ERROR: please, type a integer number!!');
while True:
Option = mainMenu(['People registered:', 'Register one more person', 'Leave the system']);
if(Option == 1):
PrintMenu('Option 1');
elif(Option == 2):
PrintMenu('Option 2');
elif (Option == 3):
print('Leaving...');
sleep(2);
break;
else:
print('ERROR: the option is inexistent. Try again!!');
entao ao utilizar esse esquema de menu, como posso associar uma class "carro" e returnar um valor por exemplo "marca"???
dicionário
carros = dict()
{
'carro 1' ; 'BMW',
'carro 2' ; 'Ferrari',
'carro 3' ; 'Audi'
etc etc etc
}
faz a função e altera pra retornar o dicionário todo, ou só os valores
pode colocar um for pra isso
for k, v in carros:
print(f'{k} -> {v})
Eu achei meio confuso de entender esses exercícios de pacote e módulos, eu fiz de acordo com o meu entendimento, vamos lá !
PACOTE (CADASTRO):
def linha(mensagem='MENU PRINCIPAL'):
print('-' * 35)
print(f'{mensagem:^35}')
print('-' * 35)
def menu():
linha()
print("""1 - Ver pessoas cadastradas
2 - Cadastrar nova pessoa
3 - Sair do programa""")
print('-' * 35)
while True:
try:
opcao_usuario = int(input('Sua opção: '))
if opcao_usuario == 1:
linha('OPÇAO 1')
elif opcao_usuario == 2:
linha('OPÇÃO 2')
elif opcao_usuario == 3:
linha('SAINDO DO SISTEMA...')
break
else:
print('ERRO: Digite uma opção válida')
except(TypeError, ValueError):
print('ERRO: Opção invalida!')
except KeyboardInterrupt:
print('Usuário interrompeu o programa.')
#### PROGRAMA PRINCIPAL ####
import cadastro
menu = cadastro.menu()
print(menu)
Boooooaaa!!!
Era so pra fazer o menu? Acabei fazendo o programa inteiro kkkk
lamentável como um video desse tem só isso de like e um clipe qualquer tem 1 milhao
Mostra como faz um programa que dado um número pelo cliente, o programa mostra os fatores primos desse número. Exemplo: 24 = 2 x 2 x 2 x 3
Use o critério de divisibilidade, quando esse número for divisível por um conjunto de determinados números, o mesmo deve listar esses números.
Guanabara, estou com um projeto onde preciso criar um código que cadastre usuários e eles tenham login e senha. Eu gostaria de saber como fazer o programa ler a senha respectiva de cada usuário. No código, há uma lista com os usuários e senhas. Ex.:[[João,123],[Maria,12234][Júlia, 445]]. Como eu faria para o programa checar se o Login e senha digitados estão na mesma "mini-lista" que criei?
Acho que se você usasse dicionários e lista ficaria melhor para trabalhar. Posta o código do projeto aqui nos comentários.
@@cleiton_rs Já consegui fazer, mas obrigado mesmo assim
Pessoal fui renomear o arquivo onde criei meus modulos e pacotes e agora parou de funcionar, fica dando esse erro -> No module named 'PACOTES_', já ajeitei os caminhos mas ainda assim fica aparecendo isso, alguém já passou por algo igual. Já pesquisei a respeito mas só encontro esse erro quando trata-se de uma biblioteca/função/modulo ja pronta que importamos, e não das que nós criamos
Eu instalei o q vc falou mas esse aí é diferente
O meu está dando erro no while, não retorna nem uma opção, só volta pro meni
Não entendi a parte do resposta = menu
Como uma variável recebe um código inteiro tipo esse do menu e o valor dele acaba sendo só o que o usuário digitou?
É que o que a variável está recebendo é o resultado da função chamada menu. O que parece grande é a sequência de parâmetros dessa função na chamada, mas o resultado retornado pela função ainda é um valor único. Se você não entendeu bem o que eu disse, este curso tem uma aula (e vários exercícios) só sobre funções e seus parâmetros.
@@e.l.2734 Acho que entendi. A variável fica sendo igual ao resultado de todo o menu né? Obrigado pela resposta
@@FelipeVicente Isso, e esse resultado, por sua vez, é o número da opção escolhida pelo usuário, conforme a função mesma nos diz. :) Fique com Deus e bons estudos
Professor tem como tocar uma música MP3 P pelo o python no celular?
Espalhem a palavra do Curso em Vídeo, do capitulo de Python, versiculo 115A
A solução que eu cheguei foi meio diferente...
def line():
print('\033[1;36m=\033[m'*35)
def interface():
line()
print('\033[1;97mMENU PRINCIPAL\033[m'.center(35))
line()
print('''\033[1;34m1 - Ver pessoas cadastradas
2 - Cadastrar nova pessoa
3 - Sair\033[m''')
line()
def validator():
from time import sleep
while True:
sleep(0.75)
interface()
try:
val = int(input('\033[1;32mDeseja qual opção? \033[m'))
if val 3:
raise Exception
except (TypeError, ValueError):
print('\033[1;31mERRO! Opção inválida.\033[m')
except Exception:
print('\033[1;33mOops! As opções são 1, 2 e 3.\033[m')
else:
if val == 1:
line()
print('OPÇÃO 1'.center(35))
line()
if val == 2:
line()
print('OPÇÃO 2'.center(35))
line()
if val == 3:
print('\033[1;32mFinalizado com sucesso! Volte sempre =)\033[m')
break
Aprendeu a fazer jogos e aplicativos??
#NA ABA DO PROGRAMA PRINCIPAL
import ex115_modulos
cor = [{'azul':'\033[0;34m'},
{'amarelo':'\033[0;33m'},
{'neutro':'\033[m'},
{'vermelho':'\033[0;31m'}]
while True:
ex115_modulos.linha('MENU PRINCIPAL')
print(f'''{cor[1]["amarelo"]}1{cor[2]["neutro"]} - {cor[0]["azul"]}Ver pessoas cadastradas{cor[2]["neutro"]}
{cor[1]["amarelo"]}2{cor[2]["neutro"]} - {cor[0]["azul"]}Cadastrar nova Pessoa{cor[2]["neutro"]}
{cor[1]["amarelo"]}3{cor[2]["neutro"]} - {cor[0]["azul"]}Sair do sistema{cor[2]["neutro"]}''')
print('-'*35)
opcao = str(input(f'{cor[1]["amarelo"]}Sua opção:{cor[2]["neutro"]} '))
if opcao not in '123' or opcao == '':
print(f'{cor[3]["vermelho"]}Erro! Digite uma opção válida!{cor[2]["neutro"]}')
elif opcao == '1':
ex115_modulos.mostralista()
elif opcao == '2':
ex115_modulos.cadastro('Nome: ', 'Idade: ')
elif opcao == '3':
break
ex115_modulos.linha('Saindo do sistema... Até logo!')
#NA ABA COM OS MODULOS
lista = [[], []]
cor = [{'azul':'\033[0;34m'},
{'amarelo':'\033[0;33m'},
{'neutro':'\033[m'},
{'vermelho':'\033[0;31m'}]
def linha(txt):
print('-'*35)
print(f'{txt:^35}')
print('-'*35)
def cadastro(n, i):
linha('CADASTRAR UMA PESSOA')
while True:
nome = str(input(n)).title().strip()
if nome.replace(' ','').isalpha():
lista[0].append(nome)
break
else:
print(f'{cor[3]["vermelho"]}Erro! Por favor, digite um nome válido!{cor[2]["neutro"]}')
while True:
try:
idade = int(input(i))
lista[1].append(idade)
break
except:
print(f'{cor[3]["vermelho"]}Erro! Por favor, digite uma idade válida!{cor[2]["neutro"]}')
print(f'Novo registro de {nome} adicionado')
def mostralista():
if len(lista[0]) == 0:
linha('PESSOAS CADASTRADAS')
print('Não há pessoas cadastradas.')
else:
linha('PESSOAS CADASTRADAS')
for c in range(0, len(lista[0])):
print(f'{lista[0][c]:
Alguém sabe qual a formação do Gustavo Guanabara?
@Davi Ok, obrigado :)
Amigos, Qual o melhor banco de dados para uso do Python (menos complicado)?
sqlite3 é o menos complicado, SQL é um dos mais utilizados.
Eu estou tentando instalar a biblioteca pygame no pycharm igual você fez no exercício 21. Não quer instalar e referência da lâmpada vermelha parou tbm de aparecer. Será que alguém pode me aju dar para mim finalizar o o ex 21? Tem outra forma de baixar no pycharm
@@leojulian5422 eu tentem pip. Tbm não deu. Eu estou com um notebook com o Windows sete. Eu mostrar o que fica escrito quando nao instala o pygame. Talvez você saiba.
Aparece: Erros occurred when installing Packag ' pygame "
Me ensinaaa
aassim
qwr
ff
prit
O meu ficou menor o programa principal, mas com módulos maiores:
#programa principal
from ex115.lib import interface
print(interface.menu())
#módulos
def linha(tam=42):
print('-' * tam)
def cor(c, cor='normal'):
if cor == 'vermelho':
c = f'\033[0;31m{c}\033[m'
if cor == 'amarelo':
c = f'\033[0;32m{c}\033[m'
if cor == 'dourado':
c = f'\033[0;33m{c}\033[m'
if cor == 'azul':
c = f'\033[0;34m{c}\033[m'
return c
def menu(opcao=0):
while opcao != 3:
linha()
print(F'{"MENU PRINCIPAL":^42}')
linha()
print(cor('1', 'dourado'), '-', cor('Ver pessoas cadastradas', 'azul'))
print(cor('2', 'dourado'), '-', cor('Cadastrar nova pessoa', 'azul'))
print(cor('3', 'dourado'), '-', cor('Sair do Sistema', 'azul'))
linha()
while True:
try:
opcao = int(input(cor('Sua Opção: ', 'amarelo')))
except (TypeError, ValueError):
print(cor('Erro! Digite um número inteiro válido!', 'vermelho'))
else:
if opcao == 2 or opcao == 1:
linha()
print(f'Opção {opcao}'.center(42))
linha()
break
elif opcao == 3:
break
else:
print(cor('Erro! Digite uma opção válida!', 'vermelho'))
print('Fim do programa')
fiz diferente porém igual:
def linha(a=42):
return '-' * a
def cabeçalho(txt):
print(linha())
print(txt.center(42))
print(linha())
def menu(lista):
while True:
cabeçalho('MENU PRINCIPAL')
c = 1
for intem in lista:
print(f'\033[1;32m{c}\033[m - \033[1;34m{intem}\033[m')
c += 1
print(linha())
a = opção('Sua Opção:')
if a == 3:
break
elif a == 1:
cabeçalho('Opção 1')
else:
cabeçalho('Opção 2')
cabeçalho('Saindo do sistema... Até logo!')
def opção(num):
try:
a = int(input(num))
return a
except ValueError:
print('\033[1;31mERROR: por favor, digite apenas um número inteiro válido.\033[m')
except KeyboardInterrupt:
print('
\033[1;31mO babaca preferiu não informa o valor\033[m')
a = 0
return a
return opção(num)
Python
#Jose.
Trabalho do caramba, mais o exercicio em si é fácil
modulo:
def testidade():
"""
:return: Retorna um valor int, e só sai quando for um int válido.
"""
p = 0
while True:
try:
p = int(input('Idade: '))
return p
except ValueError:
print(f'{c('r')}ERRO: por favor, digite uma idade válida.{c('w')}')
def testestring():
"""
:return: Quando a variavel nome, for somente string
"""
while True:
nome = str(input('Nome:')).strip().capitalize()
copia = nome
nome = nome.replace(' ', '')
if nome.isalpha():
nome = copia
return nome
print(f'{c('r')}ERRO! Por Favor Digite somente Letras no nome!{c('w')}')
def c(co='n'):
"""
:param co: escolha do usuario
:return: retorna a cor escolhida
"""
cor = {'n': '\033[1;m',
'p': '\033[1;30m',
'r': '\033[1;31m',
'g': '\033[1;32m',
'y': '\033[1;33m',
'z': '\033[1;34m',
'c': '\033[1;36m',
'w': '\033[1;97m'
}
for k, v in cor.items():
if k in co:
return v
Arquivo programa Pricipal
# Sistema de modularizadom que permite cadastrar pessoas pelo nome e idade,
# Em um arquio de txt
from utilidades.fun import testidade, testestring, c
def menu():
print(f'-{c("w")}' * 50)
print(f'{"MENU PRINCIPAL":^49}')
print('-' * 50)
print(f'{c("y")}1{c("w")} - {c("z")}Ver pessoas cadastradas')
print(f'{c("y")}2{c("w")} - {c("z")}Cadastrar nova Pessoa')
print(f'{c("y")}3{c("w")} - {c("z")}Sair do Sistema')
def mostra():
print(f'{c("w")}-' * 50)
print(f'{"PESSOAS CADASTRADAS":^49}')
print('-' * 50)
with open('teste_manip.txt', 'r', encoding='utf-8') as t:
t = t = t.read()
print(t)
def cadastra(nome='', idade=0):
with open('teste_manip.txt', 'a') as a:
a.write(f'
{nome:40}{idade} Anos')
print(f'{c('g')}-' * 50)
print(f'Novo registro de {nome} adicionado!')
print(f'-' * 50, c('n'))
# Principal
while True:
opc = 0
menu()
# Testa se a opçao está correta
while True:
try:
opc = int(input(f'{c("y")}Sua opçao:'))
if 1
fiz assim:
from menu import menu
from time import sleep
while True:
menu( )
try:
opcao = int(input('Sua opção: '))
except:
print('ERRO: Por favor digite um número inteiro válido.')
else:
if opcao == 1:
print('-'*30)
print('Opção 1'.center(30))
print('-'*30)
sleep(2)
elif opcao == 2:
print('-'*30)
print('Opção 2'.center(30))
print('-'*30)
sleep(2)
elif opcao == 3:
print('-'*30)
print('Saindo do sistema... Até logo!'.center(30))
print('-'*30)
sleep(2)
break
elif opcao == 0 or opcao > 3:
print('ERRO! Digite uma opção válida.')
sleep(2)
Não importa o numero que digito, sempre da opção invalida.
Meu amigo olha se colocou (INT) antes .ok
essa foi a minha resolução utilizando a lib pandas:
import pandas as pd
import os
# Caminho do arquivo
caminho_arquivo = (r'\CursoEmVideo\cursos\desafios\utilidades\sistema\sistema.csv')
def menu():
while True:
try:
print('-' * 50)
print(F'{"MENU PRINCIPAL":^50}')
print('-' * 50)
print('1 - VER PESSOAS CADASTRADAS')
print('2 - CADASTRAR NOVA PESSOA')
print('3 - SAIR DO SISTEMA')
print('-' * 50)
opcao = int(input('Sua opção: ').strip())
except (ValueError, TypeError):
print('O formato enviado não é válido. Escolha novamente !!')
continue
else:
if opcao == 1:
listar()
elif opcao == 2:
cadastrar()
elif opcao == 3:
print('-' * 50)
print('SAINDO DO SISTEMA... ATÉ LOGO')
print('-' * 50)
break
else:
print('Essa opção não existe. Escolha novamente !!')
os.system('cls' if os.name == 'nt' else 'clear')
print('\033[H\033[J')
def inicializar():
"""
-> Verifica se o sistema existe, caso ele não exista, faz a criação de um novo
by: Kauã Rodrigo
:return:
"""
try:
df = pd.read_csv(caminho_arquivo, sep=';')
except FileNotFoundError:
df = pd.DataFrame(columns=['Nome', 'Idade'])
df.to_csv('../sistema/sistema.csv', index=False, sep=';')
finally:
print('-' * 50)
print(f'{"O DataFrame foi carregado com sucesso":^50}')
print('-' * 50)
def cadastrar():
try:
df = pd.read_csv(caminho_arquivo, sep=';')
except FileNotFoundError:
print('Arquivo não encontrado. Inicialize um novo antes de cadastrar...')
else:
print('-' * 50)
print(f'{"NOVO CADASTRO":^50}')
print('-' * 50)
while True:
try:
nome = input('Nome: ')
idade = int(input('Idade: '))
except (ValueError, TypeError):
print('Os valores foram fornecidos de forma incorreta.')
continue
except KeyboardInterrupt:
print('O usuário optou por interroper a inserção !')
break
else:
nova_linha = pd.Series({
'Nome': nome,
'Idade': idade
})
df = df._append(nova_linha, ignore_index=True)
df.to_csv(caminho_arquivo, index=False, sep=';')
break
def listar():
try:
df = pd.read_csv(caminho_arquivo, sep=';')
except FileNotFoundError:
print('Arquivo não encontrado. Inicialize um novo antes de cadastrar...')
else:
print('-' * 50)
print(f'{"PESSOAS CADASTRADAS":^50}')
print('-' * 50)
for index, row in df.iterrows():
print(f'{row["Nome"]:
O meu menu ficou um pouco diferente, mas...
from time import sleep
def opt(num):
if num == 1:
print('OPÇÃO 1')
elif num == 2:
print('OPÇÃO 2')
while True:
print('='*30)
print('MENU PRINCIPAL'.center(30))
print('='*30)
print('\033[32m1 - Ver pessoas cadastradas')
print('2 - Cadastrar pessoas')
print('3 - Sair\033[0m')
print('='*30)
while True:
try:
n = int(input('Sua resposta: '))
except:
print('\033[31mErro! Não é um número!\033[0m')
else:
if n > 3 or n < 1:
print('\033[31mErro! Número inválido!\033[0m')
else:
break
if n == 3:
print('\033[31mSAINDO\033[0m')
sleep(1)
break
else:
opt(n)
print('='*30)