Why is this statement “if” not readable?

In my code, I want the two answers “Opposite” and “Hypotenuse” to have two separate results, however, whenever I check the code and answer “opposite”, it ignores the rest of the code and falls back on the “hypotenuse” questions. I formatted it incorrectly / is there an easier 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() 
+4
source share
1 answer

Short answer

You probably want to change them:

 if answer == ("Hypotenuse") or ("Hypotenuse.") ... 

Thus:

 if answer in ("Hypotenuse", "Hypotenuse.", ...): 

Description

Expression:

 answer == ("Foo") or ("Bar") 

It is rated as:

 (answer == ("Foo")) or (("Bar")) 

And "Bar" always True .

Obviously, as stated in the comments, "HYPOTENUSE" in answer.upper() is the best solution.

+11
source

Source: https://habr.com/ru/post/1414034/


All Articles