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

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 not able to solve is the variable "puntoextra".

If the user types "N" or "n" in the "question" variable, I want it to just terminate the program, and show on the screen that the program has ended. But, there is one, that variable "dot" is being used even if I type "N" or "n", which is equivalent to "no" adding the extra dot.     

asked by anonymous 01.01.2017 / 23:10

2 answers

3

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

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

Third, use elif . It is else if of pyhthon.

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

So, here's what your program looks like:

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!")
    
01.01.2017 / 23:18
0

A second serious form leaves the user input either uppercase or lowercase using .upper () or .lower () if the user types "s" and immediately after the input there was a .upper (), the "s "would be" S ", thus requiring only 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!")
    
10.01.2017 / 16:08