Problem on condition when checking if user typed "n", "N", "s" or "S"

Asked

Viewed 310 times

2

print("--------------------") 
print("CALCULADORA DE MÉDIA")
print("--------------------")

print()

#Primeira nota
v1 = float(input("Digite a primeira nota: "))

#Segunda nota
v2 = float(input("Digite a segunda nota: "))

#Média
media = (v1 + v2) / 2

print("A nota da sua média é:", media)
print()


#Pergunta = Pergunta do Ponto Extra
pergunta = str(input("Deseja adicionar algum ponto extra? [S/N]:"));

#Verifica se o usuário quer adicionar um ponto extra na média
if pergunta == "s" or "S":

"""Erro aqui, caso eu insira "n" ou "N" na "pergunta", ele realiza esse "pontoextra"
sendo que, quando for digitado "N" ou "n", eu não quero que ele realize essa parte!"""
pontoextra = float(input("Digite o(s) ponto(s) extra(s): "));

media = media + pontoextra;
print("A sua média final é:", media);

#Verifica se o usuário não quer adicionar ponto(s) extra(s) na média
if pergunta == "n" or "N":
print("Programa encerrado!");

#Caso ele responda algo diferente de "S" ou "N", retorna um erro
else:
print("Resposta inválida!")

Basically, what I’m unable to solve is the variable "dotoextra".

If the user type "N" or "n" in the "question" variable, I want it to just close the program, and show on the screen that the program has been terminated. But there is one though, that variable "dot-xtra" is being used even if I type "N" or "n", which is equivalent to "no" adding the extra point.

  • Basically, what I’m unable to solve is the variable "dotoextra".

  • If the user type "N" or "n" in the "question" variable, I want it to just close the program, and show on the screen that the program has been terminated. But there is one though, that variable "dot-xtra" is being used even if I type "N" or "n", which is equivalent to "no" adding the extra point.

  • an easy way to check the Sesé pegando a entrada e transforma-lá sempre em letras minuscula, assim voce só precisa fazer uma comparaçãoquestion.(), desta maneira você só precisa verificar se é igual a soun`

2 answers

3


First, remember that identation is of fundamental importance in Python. Without using the correct identation, your program will not work.

According to, if pergunta == "s" or "S" should be if pergunta == "s" or pergunta == "S". The same goes for the "n".

Third, use the elif. He is the else if pyhthon.

Fourth, I think resposta would be a more appropriate name for the variable than pergunta.

So here’s how your program works:

print("--------------------") 
print("CALCULADORA DE MÉDIA")
print("--------------------")

print()

#Primeira nota
v1 = float(input("Digite a primeira nota: "))

#Segunda nota
v2 = float(input("Digite a segunda nota: "))

#Média
media = (v1 + v2) / 2

print("A nota da sua média é:", media)
print()


#Pergunta = Pergunta do Ponto Extra
resposta = str(input("Deseja adicionar algum ponto extra? [S/N]:"));


if resposta == "s" or resposta == "S":
    pontoextra = float(input("Digite o(s) ponto(s) extra(s): "));

    media = media + pontoextra;
    print("A sua média final é:", media);

elif resposta == "n" or resposta == "N":
    print("Programa encerrado!");

else:
    print("Resposta inválida!")
  • Thanks friend! It helped a lot. I’m starting in Python, and in a class I saw on decision structure, the guy said there’s no difference between "if" and "Elif", but now I understand that "Elif" is correct. I get a little confused with the indentation of python, for being automatic haha.

  • @Kappa, if my answer helped you, solved the problem and there was no doubt left, please click on the green beside to mark my answer as accepted/correct. If you still have some questions to clarify, feel free to comment. :)

  • 1

    @Kappa but why not just do the condition if resposta.lower() == "s": ... just so you don’t need to compare the capital too

0

A second serious form leaves the user input all uppercase or minuscule using the . upper() or . Lower(), if the user typed "s" and soon after the input there was a . upper(), the "s" would be "S", thus only needing a check in the if.

print("--------------------") 
print("CALCULADORA DE MÉDIA")
print("--------------------")

print()

#Primeira nota
v1 = float(input("Digite a primeira nota: "))

#Segunda nota
v2 = float(input("Digite a segunda nota: "))

#Média
media = (v1 + v2) / 2

print("A nota da sua média é:", media)
print()


#Pergunta = Pergunta do Ponto Extra
pergunta = str(input("Deseja adicionar algum ponto extra? [S/N]:")).upper(); # isso resolveria o problema, ai só seria necessário verificar se pergunta era igual à "S" ou "N"

#Verifica se o usuário quer adicionar um ponto extra na média
if pergunta == "s" or "S":

"""Erro aqui, caso eu insira "n" ou "N" na "pergunta", ele realiza esse "pontoextra"
sendo que, quando for digitado "N" ou "n", eu não quero que ele realize essa parte!"""
pontoextra = float(input("Digite o(s) ponto(s) extra(s): "));

media = media + pontoextra;
print("A sua média final é:", media);

#Verifica se o usuário não quer adicionar ponto(s) extra(s) na média
if pergunta == "n" or "N":
print("Programa encerrado!");

#Caso ele responda algo diferente de "S" ou "N", retorna um erro
else:
print("Resposta inválida!")

Browser other questions tagged

You are not signed in. Login or sign up in order to post.