Ir ao conteúdo
  • Cadastre-se

Python queria pedir que reviseis esse programa em python


Ir à solução Resolvido por isrnick,

Posts recomendados

a uns três dias eu revolvi aprender programação e me indicaram python por ser mais fácil, aprendi um pouco, bem pouco mesmo, e resolvi criar um programa simples se é que isso pode ser chamado de programa. basicamente ele soma as notas da escola/faculdade e divide pelo numero de unidades depois verifica se a nota do aluno é maior, igual ou menor que a nota necessária para ser aprovado (basicamente verifica a media do aluno e diz se ele passou de ano ou não)

#------------------------------------------------------------------------------#

# a é o numero de unidades
# b,c,d,e são as notas
# f é a quantidade necessaria para ser aprovado (media da escola)
# g é a soma das notas dividida pela quantidade de unidades (media do aluno)

#------------------------------------------------------------------------------#

print('não use virgula e sim o ponto nas notas com numeros decimais')
while True:
    a = int (input ('\nnumero de unidades '))
    b = float (input ('\nnota 1 ') )
    c = float (input ('\nnota 2 ') )
    d = float (input ('\nnota 3 ') )
    e = float (input ('\nnota 4 ') )
    f = int (input ('\nmedia da escola ') )
    g = (b + c + d + e) / a

    if g >= f:
        print('\nsua media foi ', round(g,1))
        print('Você foi aprovado')

    else:
        print('\nsua media foi ', round(g,1))
        print('Você foi reprovado')

esta exatamente assim no arquivo .py, queria pedir a vocês que me deem dicas de como melhorar isso, também queria pedir que não me expliquem com termos técnicos da informática por que sou bastante leigo nisso ai, a unica coisa que eu sei fazer no momento são as operações matemáticas (adição, subtração e etc), o que é int, float, string e o comando print um pouco do while, if, elif e else os outros comandos que "sei" não tenho propriedade e mais nada. ajuda ai pessoal me explica também o que é função, argumento, livraria... esses termos, pelo menos os bem básicos.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

A média é uma só para toda a escola, certo? Então poderia pedir para o usuário digitar apenas 1 vez, colocando antes do ciclo while.

 

O que seria o número de unidades, a quantidade de avaliações? Mas se há 4 notas então será sempre 4 unidades, certo?  Nesse caso não precisaria pedir para o usuário digitar esse número e sempre assumir o valor 4.

 

E a média é impressa em ambos os casos do if else, então poderia estar fora/antes do if else.

print('não use virgula e sim o ponto nas notas com numeros decimais')
f = int (input ('\nmedia da escola ') )
while True:
    b = float (input ('\nnota 1 ') )
    c = float (input ('\nnota 2 ') )
    d = float (input ('\nnota 3 ') )
    e = float (input ('\nnota 4 ') )
    g = (b + c + d + e) / 4
    
    print('\nsua media foi ', round(g,1))
    if g >= f:
        print('Você foi aprovado')
    else:
        print('Você foi reprovado')

Fora isso a  coisa que poderia adicionar seria alguma maneira de acabar o ciclo while e finalizar o programa, pois como está o loop é infinito e o programa nunca é encerrado normalmente.

Link para o comentário
Compartilhar em outros sites

Poderia colocar uma variável no while ao invés de True, e fazer o valor da variável mudar dependendo para False dentro do ciclo dependendo de alguma condição.

 

Por exemplo:

 

print('não use virgula e sim o ponto nas notas com numeros decimais')
f = int (input ('\nmedia da escola ') )
continuar = True
while continuar:
    b = float (input ('\nnota 1 ') )
    c = float (input ('\nnota 2 ') )
    d = float (input ('\nnota 3 ') )
    e = float (input ('\nnota 4 ') )
    g = (b + c + d + e) / 4
    
    print('\nsua media foi ', round(g,1))
    if g >= f:
        print('Você foi aprovado\n')
    else:
        print('Você foi reprovado\n')
    
    if (input('Deseja continuar (S/N)? ')).upper() == 'N':
        continuar = False

Usar .upper() em uma string transforma as letras da string em letras maiúsculas, assim não importa se o usuário digitar 'n' ou 'N' a condição vai ser satisfeita.

Link para o comentário
Compartilhar em outros sites

#=============================================================================

#x é só pra finalizar o programa
#a é o numero maximo que ele ira sequenciar
#b é o multiplo da sequencia
#c é o numero inicial da sequencia
#não sei se os termos estão corretos, mas da pra entender que tentei fazer uma
#sequencia

#=============================================================================

x = True
print('Utilize Apenas Numeros Inteiros')

while x:
        a = int(input('ate que numero procurar? \n'))
        b = int(input('multiplos de qual numero? \n'))
        c = int(input('escolha o numero inicial da procura (0 é padrão)'))
        
        while c <= a:
                print(c, end=', ')
                c = c + b

        if (input('quer continuar? (S/N)')).upper() == 'N':
                x = False

@isrnickola, treinei com base em suas dicas tem mais alguma coisa que eu possa melhorar? fiz outro programa que mostra sequencias, exemplo de 0 a 100 em 2 e 2.

0, 2, 4, 6, 8 ... 96, 98 100

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...