Ir ao conteúdo

Python queria pedir que reviseis esse programa em python


Ir à solução Resolvido por isrnick,

Posts recomendados

Postado

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
  • Solução
Postado

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.

Postado

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.

Postado
#=============================================================================

#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

 

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...