SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Código limpo:
Usando módulos e
funções em Python
LuanC. Redmann
luandacostaredmann@gmail.com
R$ 76,80 (www.amazon.com.br)
O que é código limpo?
“Gosto do meu código elegante e
eficiente. A lógica deve ser direta para
dificultar o encobrimento de bugs, as
dependências mínimas para facilitar a
manutenção, o tratamento de erro
completo de acordo com uma
estratégia clara e o desempenho
próximo do mais eficiente de modo a
não incitar as pessoas a tornarem o
código confuso com otimizações
sorrateiras. O código limpo faz bem
apenas uma coisa.”
(STROUSTRUP, Bjarne)
1 print(“Olá, mundo!")
oCodigoRuim = open("Ryuuzaki.py", "r")
1 print("E aí, migs! Eu sou o Ryuuzaki. Estou aqui para ajudá-lo em sua vida escolar.")
2 nome = input("Para começar, me diga o seu nome: ")
3
print("%s, será um prazer ser útil a você! Baseado na sua média escolar, aritmeticamente
te direi se você passou de ano ou não. Vamos lá?" % nome)
4
m_escolar = float(input("Eu preciso saber qual é a média que a sua escola exige para você
ser aprovado (separar com ponto as casas decimais): "))
5
print("Okay, %s. Para evitar confusão, estou anotando tudo que você digita. Resumirei
tudo no final." % nome)
6 mat = input("Para prosseguir, digite o nome da matéria: ")
7
print("Certo. Funciona assim: você me informa as notas dos quatro bimestres, e eu digo
sua média e sua situação.")
8
N1 = float(input("Naquele mesmo esquema de separar as casas decimais por vírgula, me
diga. Qual foi sua nota em %s no primeiro bimestre? " % mat))
9 N2 = float(input("E no segundo? "))
10 N3 = float(input("Qual foi sua nota no terceiro bimestre? "))
11 N4 = float(input("No quarto? "))
12 m_aluno = (N1 + N2 + N3 + N4) / 4
13 print("Você obteve média %.1f" % m_aluno)
14 if m_aluno >= m_escolar:
15 print("Parabéns, %s! Você foi aprovado em %s <3" % (nome, mat))
16 s = "aprovado"
17 else:
18 s = "reprovado"
19 input("Aperte enter para continuar. ")
20 print("Como prometido, aqui estão todas as informações que você digitou: ")
21 print("")
22 print(" —> Discente: %s " % nome)
23 print(" —> Nota do primeiro bimestre: %.1f" % N1)
24 print(" —> Nota do segundo bimestre: %.1f" % N2)
25 print(" —> Nota do terceiro bimestre: %.1f" % N3)
26 print(" —> Nota do quarto bimestre: %.1f" % N4)
27 print(" —> Média exigida: %.1f" % m_escolar)
28 print(" —> Média obtida pelo discente: %.1f" % m_aluno)
29 print(" —> Situação: %s" % s)
30 print("nRyuuzaki fica feliz em ser útil. Me acorde a hora que quiser!")
31 print("Criado e desenvolvido por Luan da Costa Redmann, em 2015.")
oCodigoRuimMelhorado = open("Ryuuzaki.py", "r")
1 # Se apresenta
2 print("E aí, migs! Eu sou o Ryuuzaki. Estou aqui para ajudá-lo em sua vida escolar.")
3 # Pega as informações básicas
4 nome = input("Para começar, me diga o seu nome: ")
5
print("%s, será um prazer ser útil a você! Baseado na sua média escolar, aritmeticamente
te direi se você passou de ano ou não. Vamos lá?" % nome)
6
m_escolar = float(input("Eu preciso saber qual é a média que a sua escola exige para você
ser aprovado (separar com ponto as casas decimais): "))
7
print("Okay, %s. Para evitar confusão, estou anotando tudo que você digita. Resumirei
tudo no final." % nome)
8 mat = input("Para prosseguir, digite o nome da matéria: ")
9
print("Certo. Funciona assim: você me informa as notas dos quatro bimestres, e eu digo
sua média e sua situação.")
10 # Pega as notas
11
N1 = float(input("Naquele mesmo esquema de separar as casas decimais por ponto, me diga.
Qual foi sua nota em %s no primeiro bimestre? " % mat))
12 N2 = float(input("E no segundo? "))
13 N3 = float(input("Qual foi sua nota no terceiro bimestre? "))
14 N4 = float(input("No quarto? "))
15 # Começa a calcular
16 m_aluno = (N1 + N2 + N3 + N4) / 4
17 print("Você obteve média %.1f" % m_aluno)
18 if m_aluno >= m_escolar:
19 print("Parabéns, %s! Você foi aprovado em %s <3" % (nome, mat))
20 s = "aprovado"
21 else:
22 s = "reprovado"
23 input("Aperte enter para continuar. ")
24 # Resume as informações e mostra ao usuário
25 print("Como prometido, aqui estão todas as informações que você digitou: ")
26 print("")
27 print(" —> Discente: %s " % nome)
28 print(" —> Nota do primeiro bimestre: %.1f" % N1)
29 print(" —> Nota do segundo bimestre: %.1f" % N2)
30 print(" —> Nota do terceiro bimestre: %.1f" % N3)
31 print(" —> Nota do quarto bimestre: %.1f" % N4)
32 print(" —> Média exigida: %.1f" % m_escolar)
33 print(" —> Média obtida pelo discente: %.1f" % m_aluno)
34 print(" —> Situação: %s" % s)
35 # Se despede e encerra a execução
36 print("nRyuuzaki fica feliz em ser útil. Me acorde a hora que quiser!")
37 print("Criado e desenvolvido por Luan da Costa Redmann, em 2015.")
oCodigoBom = open("Ryuuzaki.py", "r")
1 def apresentar():
2 print("E aí, migs! Eu sou o Ryuuzaki. Estou aqui para ajudá-lo em sua vida escolar.")
3
4 def pegarNome():
5 nome = input("Para começar, me diga o seu nome: ")
6
print("%s, será um prazer ser útil a você! Baseado na sua média escolar,
aritmeticamente te direi se você passou de ano ou não. Vamos lá?" % nome)
7 return nome
8
9 def pegarMediaEscolar(nome):
10
media = float(input("Eu preciso saber qual é a média que a sua escola exige para você
ser aprovado (separar com ponto as casas decimais): "))
11
print("Okay, %s. Para evitar confusão, estou anotando tudo que você digita. Resumirei
tudo no final." % nome)
12 return media
13
14 def pegarMateria():
15 materia = input("Para prosseguir, digite o nome da matéria: ")
16
print("Certo. Funciona assim: você me informa as notas dos quatro bimestres, e eu
digo sua média e sua situação.")
17 return materia
18
19 def pegarNotas(materia):
20 notas = []
21
notas.append(float(input("Naquele mesmo esquema de separar as casas decimais por
ponto, me diga. Qual foi sua nota em %s no primeiro bimestre? " % materia)))
22 notas.append(float(input("E no segundo? ")))
23 notas.append(float(input("Qual foi sua nota no terceiro bimestre? ")))
24 notas.append(float(input("No quarto? ")))
25 return notas
26
27 def exibirMedia(notas):
28 media_aluno = sum(notas) / 4
29 print("Você obteve média %.1f" % media_aluno)
30 return media_aluno
31
32 def testarSituacao(media_escolar, media_aluno, nome, materia):
33 if media_aluno >= media_escolar:
34 print("Parabéns, %s! Você foi aprovado em %s <3" % (nome, materia))
35 situacao = "aprovado"
36 else:
37 situacao = "reprovado"
38 input("Aperte enter para continuar. ")
39 return situacao
40
41 def resumirInformacoes(info):
42 print("Como prometido, aqui estão todas as informações que você digitou: ")
43 print("")
44 print(" —> Discente: %s " % info[0])
45 print(" —> Matéria: %s " % info[2])
46 print(" —> Nota do primeiro bimestre: %.1f" % info[3][0])
47 print(" —> Nota do segundo bimestre: %.1f" % info[3][1])
48 print(" —> Nota do terceiro bimestre: %.1f" % info[3][2])
49 print(" —> Nota do terceiro bimestre: %.1f" % info[3][3])
50 print(" —> Média exigida: %.1f" % info[1])
51 print(" —> Média obtida pelo discente: %.1f" % info[4])
52 print(" —> Situação: %s" % info[5])
53
54 def despedir():
55 print("nRyuuzaki fica feliz em ser útil. Me acorde a hora que quiser!")
56 print("Criado e desenvolvido por Luan da Costa Redmann, em 2015.")
57
58 # Método principal
59 apresentar()
60 nome = pegarNome()
61 media_escolar = pegarMediaEscolar(nome)
62 materia = pegarMateria()
63 notas = pegarNotas(materia)
64 media_aluno = exibirMedia(notas)
65 situacao = testarSituacao(media_escolar, media_aluno, nome, materia)
? informacoes = [nome, media_escolar, materia, notas, media_aluno, situacao]
67 resumirInformacoes(informacoes)
68 despedir()
Fazendo o milagre
Obrigado pela atenção!
/redmannCodes

Mais conteúdo relacionado

Semelhante a Codigo Limpo - Usando Funcoes e Modulos em Python - Luan C. Redmann

Exercicios repeticao
Exercicios repeticaoExercicios repeticao
Exercicios repeticaoNadson Silva
 
GráFico De Setores
GráFico De SetoresGráFico De Setores
GráFico De Setoresnaianeufu1
 
Linguagem c wellington telles - aula 03
Linguagem c   wellington telles - aula 03Linguagem c   wellington telles - aula 03
Linguagem c wellington telles - aula 03profwtelles
 
Algoritmos - Aula 07 B - Resolucao de Exercicios
Algoritmos - Aula 07 B - Resolucao de ExerciciosAlgoritmos - Aula 07 B - Resolucao de Exercicios
Algoritmos - Aula 07 B - Resolucao de ExerciciosRodrigo Kiyoshi Saito
 
Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Adriano Teixeira de Souza
 
Algoritmo e lógica de programação - aula 4
Algoritmo e lógica de programação - aula 4Algoritmo e lógica de programação - aula 4
Algoritmo e lógica de programação - aula 4engenhariadecomputacao
 
Atividade pratica supervisionada construção de algoritimo
Atividade pratica supervisionada  construção de algoritimoAtividade pratica supervisionada  construção de algoritimo
Atividade pratica supervisionada construção de algoritimoFelipe Dias Guimarães
 
Utilizando o programa do celular mathematics 04
Utilizando o programa do celular mathematics 04Utilizando o programa do celular mathematics 04
Utilizando o programa do celular mathematics 04marcusantonioportovelho
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CAdriano Teixeira de Souza
 
03 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.103 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.1César Augusto Pessôa
 

Semelhante a Codigo Limpo - Usando Funcoes e Modulos em Python - Luan C. Redmann (20)

Exercicios repeticao
Exercicios repeticaoExercicios repeticao
Exercicios repeticao
 
Lógica De Programação
Lógica De ProgramaçãoLógica De Programação
Lógica De Programação
 
topico 2_Medidas descritivas.pdf
topico 2_Medidas descritivas.pdftopico 2_Medidas descritivas.pdf
topico 2_Medidas descritivas.pdf
 
GráFico De Setores
GráFico De SetoresGráFico De Setores
GráFico De Setores
 
Exercicios facebook
Exercicios facebookExercicios facebook
Exercicios facebook
 
Cea030.lista.03
Cea030.lista.03Cea030.lista.03
Cea030.lista.03
 
Linguagem c wellington telles - aula 03
Linguagem c   wellington telles - aula 03Linguagem c   wellington telles - aula 03
Linguagem c wellington telles - aula 03
 
Algoritmos - Aula 07 B - Resolucao de Exercicios
Algoritmos - Aula 07 B - Resolucao de ExerciciosAlgoritmos - Aula 07 B - Resolucao de Exercicios
Algoritmos - Aula 07 B - Resolucao de Exercicios
 
Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1
 
Lista de exercícios XIV Python para Zumbis
Lista de exercícios XIV Python para ZumbisLista de exercícios XIV Python para Zumbis
Lista de exercícios XIV Python para Zumbis
 
Algoritmo e lógica de programação - aula 4
Algoritmo e lógica de programação - aula 4Algoritmo e lógica de programação - aula 4
Algoritmo e lógica de programação - aula 4
 
Resumão ibge
Resumão ibgeResumão ibge
Resumão ibge
 
Atividade pratica supervisionada construção de algoritimo
Atividade pratica supervisionada  construção de algoritimoAtividade pratica supervisionada  construção de algoritimo
Atividade pratica supervisionada construção de algoritimo
 
Utilizando o programa do celular mathematics 04
Utilizando o programa do celular mathematics 04Utilizando o programa do celular mathematics 04
Utilizando o programa do celular mathematics 04
 
Estdescr
EstdescrEstdescr
Estdescr
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem C
 
Aula 3 - 06/04/11
Aula 3 - 06/04/11Aula 3 - 06/04/11
Aula 3 - 06/04/11
 
Aula 3 algoritmos
Aula 3   algoritmosAula 3   algoritmos
Aula 3 algoritmos
 
Coleo.enem.matemtica.e.biologia.2018
Coleo.enem.matemtica.e.biologia.2018Coleo.enem.matemtica.e.biologia.2018
Coleo.enem.matemtica.e.biologia.2018
 
03 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.103 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.1
 

Mais de PotiLivre Sobrenome

Criando seus próprios LIVROS DIGITAIS usando Software Livre
Criando seus próprios LIVROS DIGITAIS usando Software LivreCriando seus próprios LIVROS DIGITAIS usando Software Livre
Criando seus próprios LIVROS DIGITAIS usando Software LivrePotiLivre Sobrenome
 
Crackear o pacote Adobe é crime e você sabe disso!
Crackear o pacote Adobe é crime e você sabe disso!Crackear o pacote Adobe é crime e você sabe disso!
Crackear o pacote Adobe é crime e você sabe disso!PotiLivre Sobrenome
 
Você é espionado todos os dias: Saiba como se defender | TOR project
 Você é espionado todos os dias: Saiba como se defender | TOR project Você é espionado todos os dias: Saiba como se defender | TOR project
Você é espionado todos os dias: Saiba como se defender | TOR projectPotiLivre Sobrenome
 
lternativas livres para mapas e rotas com OSM e OSRM - Sedir Morais
lternativas livres para mapas e rotas com OSM e OSRM - Sedir Moraislternativas livres para mapas e rotas com OSM e OSRM - Sedir Morais
lternativas livres para mapas e rotas com OSM e OSRM - Sedir MoraisPotiLivre Sobrenome
 
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...PotiLivre Sobrenome
 
Thayron Arrais - AWS Amazon Web Services
Thayron Arrais - AWS Amazon Web ServicesThayron Arrais - AWS Amazon Web Services
Thayron Arrais - AWS Amazon Web ServicesPotiLivre Sobrenome
 
João Marcos Araújo do Valle - Big Data
João Marcos Araújo do Valle - Big DataJoão Marcos Araújo do Valle - Big Data
João Marcos Araújo do Valle - Big DataPotiLivre Sobrenome
 
Security updates por que voce deveria aceitar os updates da sua distro leo...
Security updates  por que voce deveria aceitar os updates da sua distro   leo...Security updates  por que voce deveria aceitar os updates da sua distro   leo...
Security updates por que voce deveria aceitar os updates da sua distro leo...PotiLivre Sobrenome
 
Como ganhar dinheiro com Software Livre Matheus Oliveira Flisol Natal 2018
Como ganhar dinheiro com Software Livre Matheus Oliveira Flisol Natal 2018Como ganhar dinheiro com Software Livre Matheus Oliveira Flisol Natal 2018
Como ganhar dinheiro com Software Livre Matheus Oliveira Flisol Natal 2018PotiLivre Sobrenome
 
Mudando para o Software Livre sem complicacao - Diogenes Dantas - FLISOL Nata...
Mudando para o Software Livre sem complicacao - Diogenes Dantas - FLISOL Nata...Mudando para o Software Livre sem complicacao - Diogenes Dantas - FLISOL Nata...
Mudando para o Software Livre sem complicacao - Diogenes Dantas - FLISOL Nata...PotiLivre Sobrenome
 
LibreFlix-org - FLISOL Natal 2018
LibreFlix-org - FLISOL Natal 2018LibreFlix-org - FLISOL Natal 2018
LibreFlix-org - FLISOL Natal 2018PotiLivre Sobrenome
 
O que e Software Livre, Comunidade PotiLivre e FLISOL - FLISOL Natal 2018
O que e Software Livre, Comunidade PotiLivre e FLISOL - FLISOL Natal 2018O que e Software Livre, Comunidade PotiLivre e FLISOL - FLISOL Natal 2018
O que e Software Livre, Comunidade PotiLivre e FLISOL - FLISOL Natal 2018PotiLivre Sobrenome
 
O desafio de levar a filosofia do Software Livre para o Rio Grande do Norte
O desafio de levar a filosofia do Software Livre para o Rio Grande do NorteO desafio de levar a filosofia do Software Livre para o Rio Grande do Norte
O desafio de levar a filosofia do Software Livre para o Rio Grande do NortePotiLivre Sobrenome
 
Softwares Educativos Livres e Recursos Educacionais abertos para Matematica
Softwares Educativos Livres e Recursos Educacionais abertos para MatematicaSoftwares Educativos Livres e Recursos Educacionais abertos para Matematica
Softwares Educativos Livres e Recursos Educacionais abertos para MatematicaPotiLivre Sobrenome
 
Softwares Educativos Livres - PotiCon 2016
Softwares Educativos Livres - PotiCon 2016Softwares Educativos Livres - PotiCon 2016
Softwares Educativos Livres - PotiCon 2016PotiLivre Sobrenome
 
Minicurso introducao a plataforma arduino nathecia cunha e alcimar medeiros -...
Minicurso introducao a plataforma arduino nathecia cunha e alcimar medeiros -...Minicurso introducao a plataforma arduino nathecia cunha e alcimar medeiros -...
Minicurso introducao a plataforma arduino nathecia cunha e alcimar medeiros -...PotiLivre Sobrenome
 
O que e joomla - Jose Roberto - Encontro PotiLivre
O que e joomla - Jose Roberto - Encontro PotiLivreO que e joomla - Jose Roberto - Encontro PotiLivre
O que e joomla - Jose Roberto - Encontro PotiLivrePotiLivre Sobrenome
 

Mais de PotiLivre Sobrenome (20)

Gestão de ativos com o GPLI
Gestão de ativos com o GPLIGestão de ativos com o GPLI
Gestão de ativos com o GPLI
 
O poder do software livre
O poder do software livreO poder do software livre
O poder do software livre
 
Criando seus próprios LIVROS DIGITAIS usando Software Livre
Criando seus próprios LIVROS DIGITAIS usando Software LivreCriando seus próprios LIVROS DIGITAIS usando Software Livre
Criando seus próprios LIVROS DIGITAIS usando Software Livre
 
Crackear o pacote Adobe é crime e você sabe disso!
Crackear o pacote Adobe é crime e você sabe disso!Crackear o pacote Adobe é crime e você sabe disso!
Crackear o pacote Adobe é crime e você sabe disso!
 
Você é espionado todos os dias: Saiba como se defender | TOR project
 Você é espionado todos os dias: Saiba como se defender | TOR project Você é espionado todos os dias: Saiba como se defender | TOR project
Você é espionado todos os dias: Saiba como se defender | TOR project
 
lternativas livres para mapas e rotas com OSM e OSRM - Sedir Morais
lternativas livres para mapas e rotas com OSM e OSRM - Sedir Moraislternativas livres para mapas e rotas com OSM e OSRM - Sedir Morais
lternativas livres para mapas e rotas com OSM e OSRM - Sedir Morais
 
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...
 
Thayron Arrais - AWS Amazon Web Services
Thayron Arrais - AWS Amazon Web ServicesThayron Arrais - AWS Amazon Web Services
Thayron Arrais - AWS Amazon Web Services
 
João Marcos Araújo do Valle - Big Data
João Marcos Araújo do Valle - Big DataJoão Marcos Araújo do Valle - Big Data
João Marcos Araújo do Valle - Big Data
 
Igor Oliveira - Puppet
Igor Oliveira - PuppetIgor Oliveira - Puppet
Igor Oliveira - Puppet
 
Security updates por que voce deveria aceitar os updates da sua distro leo...
Security updates  por que voce deveria aceitar os updates da sua distro   leo...Security updates  por que voce deveria aceitar os updates da sua distro   leo...
Security updates por que voce deveria aceitar os updates da sua distro leo...
 
Como ganhar dinheiro com Software Livre Matheus Oliveira Flisol Natal 2018
Como ganhar dinheiro com Software Livre Matheus Oliveira Flisol Natal 2018Como ganhar dinheiro com Software Livre Matheus Oliveira Flisol Natal 2018
Como ganhar dinheiro com Software Livre Matheus Oliveira Flisol Natal 2018
 
Mudando para o Software Livre sem complicacao - Diogenes Dantas - FLISOL Nata...
Mudando para o Software Livre sem complicacao - Diogenes Dantas - FLISOL Nata...Mudando para o Software Livre sem complicacao - Diogenes Dantas - FLISOL Nata...
Mudando para o Software Livre sem complicacao - Diogenes Dantas - FLISOL Nata...
 
LibreFlix-org - FLISOL Natal 2018
LibreFlix-org - FLISOL Natal 2018LibreFlix-org - FLISOL Natal 2018
LibreFlix-org - FLISOL Natal 2018
 
O que e Software Livre, Comunidade PotiLivre e FLISOL - FLISOL Natal 2018
O que e Software Livre, Comunidade PotiLivre e FLISOL - FLISOL Natal 2018O que e Software Livre, Comunidade PotiLivre e FLISOL - FLISOL Natal 2018
O que e Software Livre, Comunidade PotiLivre e FLISOL - FLISOL Natal 2018
 
O desafio de levar a filosofia do Software Livre para o Rio Grande do Norte
O desafio de levar a filosofia do Software Livre para o Rio Grande do NorteO desafio de levar a filosofia do Software Livre para o Rio Grande do Norte
O desafio de levar a filosofia do Software Livre para o Rio Grande do Norte
 
Softwares Educativos Livres e Recursos Educacionais abertos para Matematica
Softwares Educativos Livres e Recursos Educacionais abertos para MatematicaSoftwares Educativos Livres e Recursos Educacionais abertos para Matematica
Softwares Educativos Livres e Recursos Educacionais abertos para Matematica
 
Softwares Educativos Livres - PotiCon 2016
Softwares Educativos Livres - PotiCon 2016Softwares Educativos Livres - PotiCon 2016
Softwares Educativos Livres - PotiCon 2016
 
Minicurso introducao a plataforma arduino nathecia cunha e alcimar medeiros -...
Minicurso introducao a plataforma arduino nathecia cunha e alcimar medeiros -...Minicurso introducao a plataforma arduino nathecia cunha e alcimar medeiros -...
Minicurso introducao a plataforma arduino nathecia cunha e alcimar medeiros -...
 
O que e joomla - Jose Roberto - Encontro PotiLivre
O que e joomla - Jose Roberto - Encontro PotiLivreO que e joomla - Jose Roberto - Encontro PotiLivre
O que e joomla - Jose Roberto - Encontro PotiLivre
 

Codigo Limpo - Usando Funcoes e Modulos em Python - Luan C. Redmann

  • 1. Código limpo: Usando módulos e funções em Python LuanC. Redmann luandacostaredmann@gmail.com
  • 2.
  • 4. O que é código limpo?
  • 5. “Gosto do meu código elegante e eficiente. A lógica deve ser direta para dificultar o encobrimento de bugs, as dependências mínimas para facilitar a manutenção, o tratamento de erro completo de acordo com uma estratégia clara e o desempenho próximo do mais eficiente de modo a não incitar as pessoas a tornarem o código confuso com otimizações sorrateiras. O código limpo faz bem apenas uma coisa.” (STROUSTRUP, Bjarne)
  • 8. 1 print("E aí, migs! Eu sou o Ryuuzaki. Estou aqui para ajudá-lo em sua vida escolar.") 2 nome = input("Para começar, me diga o seu nome: ") 3 print("%s, será um prazer ser útil a você! Baseado na sua média escolar, aritmeticamente te direi se você passou de ano ou não. Vamos lá?" % nome) 4 m_escolar = float(input("Eu preciso saber qual é a média que a sua escola exige para você ser aprovado (separar com ponto as casas decimais): ")) 5 print("Okay, %s. Para evitar confusão, estou anotando tudo que você digita. Resumirei tudo no final." % nome) 6 mat = input("Para prosseguir, digite o nome da matéria: ") 7 print("Certo. Funciona assim: você me informa as notas dos quatro bimestres, e eu digo sua média e sua situação.") 8 N1 = float(input("Naquele mesmo esquema de separar as casas decimais por vírgula, me diga. Qual foi sua nota em %s no primeiro bimestre? " % mat)) 9 N2 = float(input("E no segundo? ")) 10 N3 = float(input("Qual foi sua nota no terceiro bimestre? ")) 11 N4 = float(input("No quarto? ")) 12 m_aluno = (N1 + N2 + N3 + N4) / 4 13 print("Você obteve média %.1f" % m_aluno) 14 if m_aluno >= m_escolar:
  • 9. 15 print("Parabéns, %s! Você foi aprovado em %s <3" % (nome, mat)) 16 s = "aprovado" 17 else: 18 s = "reprovado" 19 input("Aperte enter para continuar. ") 20 print("Como prometido, aqui estão todas as informações que você digitou: ") 21 print("") 22 print(" —> Discente: %s " % nome) 23 print(" —> Nota do primeiro bimestre: %.1f" % N1) 24 print(" —> Nota do segundo bimestre: %.1f" % N2) 25 print(" —> Nota do terceiro bimestre: %.1f" % N3) 26 print(" —> Nota do quarto bimestre: %.1f" % N4) 27 print(" —> Média exigida: %.1f" % m_escolar) 28 print(" —> Média obtida pelo discente: %.1f" % m_aluno) 29 print(" —> Situação: %s" % s) 30 print("nRyuuzaki fica feliz em ser útil. Me acorde a hora que quiser!") 31 print("Criado e desenvolvido por Luan da Costa Redmann, em 2015.")
  • 10.
  • 12. 1 # Se apresenta 2 print("E aí, migs! Eu sou o Ryuuzaki. Estou aqui para ajudá-lo em sua vida escolar.") 3 # Pega as informações básicas 4 nome = input("Para começar, me diga o seu nome: ") 5 print("%s, será um prazer ser útil a você! Baseado na sua média escolar, aritmeticamente te direi se você passou de ano ou não. Vamos lá?" % nome) 6 m_escolar = float(input("Eu preciso saber qual é a média que a sua escola exige para você ser aprovado (separar com ponto as casas decimais): ")) 7 print("Okay, %s. Para evitar confusão, estou anotando tudo que você digita. Resumirei tudo no final." % nome) 8 mat = input("Para prosseguir, digite o nome da matéria: ") 9 print("Certo. Funciona assim: você me informa as notas dos quatro bimestres, e eu digo sua média e sua situação.") 10 # Pega as notas 11 N1 = float(input("Naquele mesmo esquema de separar as casas decimais por ponto, me diga. Qual foi sua nota em %s no primeiro bimestre? " % mat)) 12 N2 = float(input("E no segundo? ")) 13 N3 = float(input("Qual foi sua nota no terceiro bimestre? ")) 14 N4 = float(input("No quarto? "))
  • 13. 15 # Começa a calcular 16 m_aluno = (N1 + N2 + N3 + N4) / 4 17 print("Você obteve média %.1f" % m_aluno) 18 if m_aluno >= m_escolar: 19 print("Parabéns, %s! Você foi aprovado em %s <3" % (nome, mat)) 20 s = "aprovado" 21 else: 22 s = "reprovado" 23 input("Aperte enter para continuar. ") 24 # Resume as informações e mostra ao usuário 25 print("Como prometido, aqui estão todas as informações que você digitou: ") 26 print("") 27 print(" —> Discente: %s " % nome) 28 print(" —> Nota do primeiro bimestre: %.1f" % N1) 29 print(" —> Nota do segundo bimestre: %.1f" % N2) 30 print(" —> Nota do terceiro bimestre: %.1f" % N3) 31 print(" —> Nota do quarto bimestre: %.1f" % N4) 32 print(" —> Média exigida: %.1f" % m_escolar)
  • 14. 33 print(" —> Média obtida pelo discente: %.1f" % m_aluno) 34 print(" —> Situação: %s" % s) 35 # Se despede e encerra a execução 36 print("nRyuuzaki fica feliz em ser útil. Me acorde a hora que quiser!") 37 print("Criado e desenvolvido por Luan da Costa Redmann, em 2015.")
  • 15.
  • 17. 1 def apresentar(): 2 print("E aí, migs! Eu sou o Ryuuzaki. Estou aqui para ajudá-lo em sua vida escolar.") 3 4 def pegarNome(): 5 nome = input("Para começar, me diga o seu nome: ") 6 print("%s, será um prazer ser útil a você! Baseado na sua média escolar, aritmeticamente te direi se você passou de ano ou não. Vamos lá?" % nome) 7 return nome 8 9 def pegarMediaEscolar(nome): 10 media = float(input("Eu preciso saber qual é a média que a sua escola exige para você ser aprovado (separar com ponto as casas decimais): ")) 11 print("Okay, %s. Para evitar confusão, estou anotando tudo que você digita. Resumirei tudo no final." % nome) 12 return media 13 14 def pegarMateria(): 15 materia = input("Para prosseguir, digite o nome da matéria: ")
  • 18. 16 print("Certo. Funciona assim: você me informa as notas dos quatro bimestres, e eu digo sua média e sua situação.") 17 return materia 18 19 def pegarNotas(materia): 20 notas = [] 21 notas.append(float(input("Naquele mesmo esquema de separar as casas decimais por ponto, me diga. Qual foi sua nota em %s no primeiro bimestre? " % materia))) 22 notas.append(float(input("E no segundo? "))) 23 notas.append(float(input("Qual foi sua nota no terceiro bimestre? "))) 24 notas.append(float(input("No quarto? "))) 25 return notas 26 27 def exibirMedia(notas): 28 media_aluno = sum(notas) / 4 29 print("Você obteve média %.1f" % media_aluno) 30 return media_aluno 31
  • 19. 32 def testarSituacao(media_escolar, media_aluno, nome, materia): 33 if media_aluno >= media_escolar: 34 print("Parabéns, %s! Você foi aprovado em %s <3" % (nome, materia)) 35 situacao = "aprovado" 36 else: 37 situacao = "reprovado" 38 input("Aperte enter para continuar. ") 39 return situacao 40 41 def resumirInformacoes(info): 42 print("Como prometido, aqui estão todas as informações que você digitou: ") 43 print("") 44 print(" —> Discente: %s " % info[0]) 45 print(" —> Matéria: %s " % info[2]) 46 print(" —> Nota do primeiro bimestre: %.1f" % info[3][0]) 47 print(" —> Nota do segundo bimestre: %.1f" % info[3][1]) 48 print(" —> Nota do terceiro bimestre: %.1f" % info[3][2]) 49 print(" —> Nota do terceiro bimestre: %.1f" % info[3][3])
  • 20. 50 print(" —> Média exigida: %.1f" % info[1]) 51 print(" —> Média obtida pelo discente: %.1f" % info[4]) 52 print(" —> Situação: %s" % info[5]) 53 54 def despedir(): 55 print("nRyuuzaki fica feliz em ser útil. Me acorde a hora que quiser!") 56 print("Criado e desenvolvido por Luan da Costa Redmann, em 2015.") 57 58 # Método principal 59 apresentar() 60 nome = pegarNome() 61 media_escolar = pegarMediaEscolar(nome) 62 materia = pegarMateria() 63 notas = pegarNotas(materia) 64 media_aluno = exibirMedia(notas) 65 situacao = testarSituacao(media_escolar, media_aluno, nome, materia) ? informacoes = [nome, media_escolar, materia, notas, media_aluno, situacao] 67 resumirInformacoes(informacoes)