O documento descreve três versões de código Python para um programa que calcula a média escolar de um aluno e indica se ele foi aprovado ou reprovado. A primeira versão é um código ruim, a segunda é uma versão melhorada e a terceira é considerada um código bom, organizado em funções.
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.")
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.")
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)