Cal_9000
Cal_9000

Reputation: 57

python if statement evaluation with multiple values

I'm not exactly sure why but when I execute this section of code nothing happens.

while (True) :

    choice = str(input("Do you want to draw a spirograph? (Y/N) "))

    if choice == 'n' or 'N' :
        break

    elif choice == 'y' or 'Y' :    

       <CODE>

    else :
        print("Please enter a valid command.")
        choice = input("Do you want to draw a spirograph? (Y/N)")           

Upvotes: 3

Views: 921

Answers (2)

Anshul Goyal
Anshul Goyal

Reputation: 77053

It won't work because the 'N' literal always evaluates to True within your if statement.

Your if condition currently stands as if choice == 'n' or 'N' :, which is equivalent to if (choice == 'n') or ('N'), which will always evaluate to True irrespective of the value of variable choice, since the literal 'N' always evaluates to True.

Instead, use one of the following

  • if choice == 'n' or choice == 'N' :
  • if choice in 'nN' :
  • if choice in ('n', 'N') :

The same holds for your elif block as well. You can read more about Truth Value testing here.

Upvotes: 12

Nick Russo
Nick Russo

Reputation: 1542

This expression doesn't do what you want:

choice == 'n' or 'N'

It is interpretted as this:

(choice == 'n') or 'N'

You might want to try this instead:

choice in 'nN'

Upvotes: 5

Related Questions