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