In my code, I want the two answers 'Opposite' and 'Hypotenuse,' to have two separate outcomes, however, whenever I test the code and answer, 'opposite,' it ignores the rest of the code and goes down to the 'hypotenuse' questions. Have I formatted it wrong/is there a simpler way to do this/etc.?
from math import *
def main():
#Trignometry Problem
def answer():
answer = raw_input()
while True:
# Phrase Variables
phrase1 = ("To begin, we will solve a trigonometry problem using sin.")
phrase2 = ("Which is known - hypotenuse or opposite?")
phrase3 = ("Good! Now, we will begin to solve the problem!")
phrase4 = ("Please press any key to restart the program.")
print phrase1
origin=input("What is the origin?")
print phrase2
answer = raw_input()
if answer == ("Hypotenuse.") or ("Hypotenuse") or ("hypotenuse") or ("hyotenuse."):
hypotenuse=input("What is the hypotenuse?")
print "So, the problem is " + "sin" + str(origin) + " = " + "x" + "/" + str(hypotenuse) + "?"
answer = raw_input()
if answer == ("Yes.") or ("yes") or ("yes.") or ("Yes"):
print phrase2
answer = raw_input()
print phrase4
answer = raw_input()
if answer == ("No."):
break
if answer == ("Opposite."):
opposite=input("What is the opposite?")
print "So, the problem is " + "sin" + str(origin) + " = " + str(opposite) + "/" + "x" + "?"
answer = raw_input()
if answer == ("Yes.") or ("yes") or ("yes.") or ("Yes"):
print phrase2
answer = raw_input()
print phrase4
answer = raw_input()
if answer == ("No."):
break
main()
You probably want to change those:
if answer == ("Hypotenuse") or ("Hypotenuse.") ...
By this:
if answer in ("Hypotenuse", "Hypotenuse.", ...):
The expression:
answer == ("Foo") or ("Bar")
It is evaluated like:
(answer == ("Foo")) or (("Bar"))
And "Bar"
is always True
.
Obviously, as pointed out in the comments, "HYPOTENUSE" in answer.upper()
is the best solution.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With