How Python works
No Python
a string
empty in a condition return is false, however a string
with some value is returning true, see an example:
Example 1
if "uma string qualquer" :
print("Tudo ok")
else:
print("Não deu")
Example 2
Result: All ok
if "" :
print("Tudo ok")
else:
print("Não deu")
Result: Did not give
The problem
In your case, it returned false in the first condition Resposta1 == "Obi Wan Kenobi"
, but the other strings were returning true, since they were not empty.
It is necessary to compare the variable with all strings
if Resposta1 == "Obi Wan Kenobi" or Resposta1 == "Obi-Wan Kenobi" or Resposta1 == "Obi Wan" or Resposta1 == "obi wan":
That's why I was always returning a positive value, see your edited code:
Score = 0
Resposta1 = input("No filme Star Wars, Episódio IV, Léia manda uma mensagem de socorro que diz: \n \" Help me ___________, "
"you're my only hope.\" Para quem Léia estava pedindo ajuda?")
if Resposta1 == "Obi Wan Kenobi" or Resposta1 == "Obi-Wan Kenobi" or Resposta1 == "Obi Wan" or Resposta1 == "obi wan":
print("Boa, você é mesmo um Jedi!")
Score = Score + 1
else:
print("Você tem muito a aprender, jovem Padawn.")
print("Seu score atual é: " + str(Score))
Code with improvements
To get easier you can use the "in" example:
if Resposta1 in ["Obi-Wan Kenobi", "Obi Wan", "obi wan"]:
The same example using your code:
Score = 0
Resposta1 = input("""
No filme Star Wars, Episódio IV, Léia manda uma mensagem de socorro que diz:
Help me ___________, you're my only hope.\" Para quem Léia estava pedindo ajuda?
""")
if Resposta1 in ["Obi-Wan Kenobi", "Obi Wan", "obi wan"]:
print("Boa, você é mesmo um Jedi!")
Score = Score + 1
else:
print("Você tem muito a aprender, jovem Padawn.")
print("Seu score atual é: " + str(Score))
In this way it checks if the answer is in the array, if yes,
it returns true, I took the hint from fernandosavio and used it
multiline strings for easier reading.
Test here